Module: Enumerable
- Included in:
- NullEnumerator, SequenceEnumerator
- Defined in:
- lib/utilrb/enumerable/uniq.rb,
lib/utilrb/enumerable/random_element.rb
Instance Method Summary collapse
-
#each_uniq ⇒ Object
call-seq: each_uniq { |obj| … }.
-
#random_element ⇒ Object
Returns a random element in the enumerable.
Instance Method Details
#each_uniq ⇒ Object
call-seq:
each_uniq { |obj| ... }
Yields all unique values found in enum
56 57 58 59 60 61 62 63 64 |
# File 'lib/utilrb/enumerable/uniq.rb', line 56 def each_uniq seen = Set.new each do |obj| if !seen.include?(obj) seen << obj yield(obj) end end end |
#random_element ⇒ Object
Returns a random element in the enumerable. In the worst case scenario, it converts the enumerable into an array
9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
# File 'lib/utilrb/enumerable/random_element.rb', line 9 def random_element if respond_to?(:to_ary) to_ary.random_element elsif respond_to?(:size) return if size == 0 element = rand(size) each_with_index { |e, i| return e if i == element } raise "something wrong here ..." elsif respond_to?(:to_a) to_a.random_element else raise ArgumentError, "cannot ue #random_element on this enumerable" end end |