Enumerable :: each_with_index现在可选择在Ruby 1.9中使用参数。具体意义和/或用例是什么?

时间:2011-10-29 04:54:56

标签: ruby enumerable ruby-1.9 ruby-1.8.7

在Ruby 1.8.7及之前版本中,Enumerable::each_with_index不接受任何参数。在Ruby 1.9中,它将接受任意数量的参数。 Documentation/code表明它只是将这些参数传递给::each。使用内置和标准库Enumerables,我相信传递参数会产生错误,因为Enumerable的::each方法不期望参数。

所以我猜这只会在创建你自己的Enumerable时有用,你可以在其中创建一个接受参数的::each方法。什么是有用的例子?

这种变化还有其他非明显的后果吗?

1 个答案:

答案 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,...)不接受参数。