【发布时间】:2011-11-03 05:52:24
【问题描述】:
在最新版本的 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]
我想用我自己的方法做同样的事情,像这样:
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 }
【问题讨论】:
标签: ruby enumerable