Enumerable::each_with_index 现在可以选择在 Ruby 1.9 中接受参数。有什么意义和/或用例是什么?

发布于 2024-12-13 04:42:08 字数 438 浏览 0 评论 0原文

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

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

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

In Ruby 1.8.7 and prior, Enumerable::each_with_index did not accept any arguments. In Ruby 1.9, it will accept an arbitrary number of arguments. Documentation/code shows that it simply passes those arguments along to ::each. With the built in and standard library Enumerables, I believe passing an argument will yield an error, since the Enumerable's ::each method isn't expecting parameters.

So I would guess this is only useful in creating your own Enumerable in which you do create an ::each method that accepts arguments. What is an example where this would be useful?

Are there any other non-obvious consequences of this change?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

夏日落 2024-12-20 04:42:09

我浏览了一些 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、...)不接受参数。

I went through some gems code and found almost no uses of that feature. One that it does, spreadsheet:

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

I don't really see that as an important change: #each is the base method for classes that mix-in module Enumerable, and methods added (map, select, ...) do not accept arguments.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文