4

在 Ruby 1.8.7 和之前的版本中,Enumerable::each_with_index不接受任何参数。在 Ruby 1.9 中,它将接受任意数量的参数。文档/代码显示它只是将这些参数传递给::each. 使用内置和标准库 Enumerables,我相信传递参数会产生错误,因为 Enumerable 的::each方法不需要参数。

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

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

4

1 回答 1

2

我浏览了一些 gems 代码,发现几乎没有使用该功能。它所做的一个spreadsheet

def each skip=dimensions[0], &block
  skip.upto(dimensions[1] - 1) do |idx|
    block.call row(idx)
  end
end

我真的不认为这是一个重要的变化:#each是混合模块 Enumerable 的类的基本方法,并且添加的方法(map,select,...)不接受参数。

于 2011-10-29T07:21:42.233 回答