| Module | Enumerable |
| In: |
lib/core_ex.rb
lib/core_ex/enumerable.rb |
# File lib/core_ex/enumerable.rb, line 36 def average ( init=0 ) size_ = size.to_f inject(init) { |accu, x| accu + x / size_ } end
Basically, do the same as each_with_index but yield the arguments in reverse order. Thus an array can be assume in certain cases to a hash.
# File lib/core_ex/enumerable.rb, line 52 def each_pair ( &block ) each_with_index { |x, i| block[i, x] } end
See also Enumerable#inject
# File lib/core_ex/enumerable.rb, line 17 def fold ( init, each_method=:each, &block ) accu = init send(each_method) do |*a| accu = block[accu, *a] end accu end
# File lib/core_ex/enumerable.rb, line 26 def foldi ( init, &block ) fold(init, :each_with_index, &block) end
# File lib/core_ex/enumerable.rb, line 63 def group_sequences_by ( &block ) result = [] current = nil each do |x| if current.nil? result << [x] else if block[current, x] result.last << x else result << [x] end end current = x end result end
# File lib/core_ex/enumerable.rb, line 31 def prod ( init=1 ) inject(init) { |accu, x| accu * x } end
# File lib/core_ex/enumerable.rb, line 57 def rec_fold ( init, &block ) fold(init) do |accu1, *a1| a1.fold(accu1) { |accu2, a2| a2.rec_fold(accu2, &block) } end end