gpt4 book ai didi

ruby - Ruby 中的 Enumerable#each 和 Enumerable#each_entry 之间有区别吗?

转载 作者:数据小太阳 更新时间:2023-10-29 06:58:47 26 4
gpt4 key购买 nike

Enumerable documentation没有明确说明 eacheach_entry 的别名,但是 each_entry 的描述与我对 each< 的期望完全匹配.

在两个答案的示例中,都定义了新类,这些类实现了 Enumerable 模块并定义了 each 方法。

谁能给出一个内置类的例子,比如 ArrayHash,它们与 each 的行为不同每个条目?

最佳答案

它们是不同的。使用 RDoc 中的示例:

class Foo
include Enumerable
def each
yield 1
yield 1, 2
yield
end
end

Foo.new.each_entry{|o| p o}
# =>
1
[1, 2]
nil

Foo.new.each{|o| p o}
# =>
1
1
nil

Foo.new.each{|*o| p o}
# =>
[1]
[1, 2]
[]

不同之处在于 each_entry 将所有元素传递给唯一的 block 变量,其行为取决于单次迭代中传递的元素数量:如果没有,则将其视为 nil,如果有,它接​​受那个参数,否则,它把它们放在一个数组中。另一方面,each 仅将每次迭代中传递的第一个对象传递给唯一 block 变量。

关于ruby - Ruby 中的 Enumerable#each 和 Enumerable#each_entry 之间有区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19840059/

26 4 0