在Ruby 1.8.7及之前版本中,Enumerable::each_with_index
不接受任何参数。在Ruby 1.9中,它将接受任意数量的参数。 Documentation/code表明它只是将这些参数传递给::each
。使用内置和标准库Enumerables,我相信传递参数会产生错误,因为Enumerable的::each
方法不期望参数。
所以我猜这只会在创建你自己的Enumerable时有用,你可以在其中创建一个接受参数的::each
方法。什么是有用的例子?
这种变化还有其他非明显的后果吗?
答案 0 :(得分:2)
我浏览了一些宝石代码,发现几乎没有使用该功能。它的一个,spreadsheet
:
def each skip=dimensions[0], &block
skip.upto(dimensions[1] - 1) do |idx|
block.call row(idx)
end
end
我并不认为这是一个重要的变化:#each
是混合模块Enumerable的类的基本方法,添加的方法(map,select,...)不接受参数。