методы ruby, которые либо дают, либо возвращают Enumerator

в последних версиях Ruby многие методы в Enumerable возвращают Enumerator , когда они вызываются без блока:

[1,2,3,4].map 
#=> #<Enumerator: [1, 2, 3, 4]:map> 
[1,2,3,4].map { |x| x*2 }
#=> [2, 4, 6, 8] 

Я хочу сделать do то же самое в моих собственных методах:

class Array
  def double(&block)
    # ???
  end
end

arr = [1,2,3,4]

puts "with block: yielding directly"
arr.double { |x| p x } 

puts "without block: returning Enumerator"
enum = arr.double
enum.each { |x| p x }
29
задан Doctor Mohawk 2 May 2013 в 03:53
поделиться