我可以编写一个简短的示例来验证内部调用to_a
的情况。这里是:Enumerable
each
class MyFooClass
include Enumerable
def initialize
@members = [1, 2, 3]
end
def each
puts "each is now called"
@members.each{ |m| yield(m) }
end
end
a = MyFooClass.new
puts "let us convert to array"
g = a.to_a
输出是:
let us convert to array
each is now called
请注意,each
它不是 的成员Enumerable
,而是to_a
。此外,如果我从类中删除 的定义each
,则代码会崩溃并显示以下消息:
in `to_a': undefined method `each' for #<MyFooClass:0x997c1ac @members=[1, 2, 3]> (NoMethodError)
我想知道是否有关于此的 Ruby 官方文档,该文档将记录to_a
(它是 的成员Enumerable
)在您的类中通过each
方法的事实。请不要将我指向to_a
. 我不认为这是一个答案。