我有以下定义:
class AllVowels
@@vowels = %w{a e i o u}
def each
@@vowels.each {|v| yield v}
end
end此代码:
AllVowels.new.each {|vowels| puts vowels}只输出元音一次:
a
e
i
o
u鉴于这一守则:
puts AllVowels.new.each {|vowel| puts vowel}输出元音两次如下:
a
e
i
o
u
a
e
i
o
u为什么我有两份元音?
发布于 2014-10-29 17:12:14
puts AllVowels.new.each {|vowel| puts vowel}AllVowels.new.each对每个项目调用puts vowel,从而生成第一个a e i o u。然后,借助Ruby的隐式返回,它返回
@@vowels.each {|v| yield v}这是@@vowels本身,允许链接。对该数组调用puts将导致第二个a e i o u。
这可能有助于理清问题:
vowels = AllVowels.new.each do |vowel|
puts "In each, got #{vowel}"
end
puts "Outside of each, got #{vowels}"演示
https://stackoverflow.com/questions/26636613
复制相似问题