我正在阅读Chris Pine的“学习编程”第7章阵列和迭代器。 他通过以下示例介绍了每种方法:
languages = ['English', 'German', 'Ruby']
languages.each do |lang|
puts 'I love ' + lang + '!'
puts 'Don\'t you?'
end
puts 'And let\'s hear it for C++!'
puts '...'
不难理解它的整体效果如何,但我无法弄清楚|lang|
部分来自何处。在它可以这样使用之前,不应该分配/命名或者其他东西吗?所以计算机可以知道" lang"是指? ||
围绕lang
做些什么吗?或者ruby只知道lang
的意思吗?
我担心这个问题太基本了,但我希望有人可以帮我一点......
答案 0 :(得分:4)
lang
是一个用于保存languages
数组元素的变量。 ||
内的任何变量都将用于从数组中获取单个元素。因此,每次循环执行时,数组中的元素将弹出并保存在名为lang
的变量中,lang
保存的数据将使用puts
方法显示。
答案 1 :(得分:3)
each
方法逐个生成每个元素,并将其分配给变量lang
。
在内部,each
方法实现如下:
def each
index = 0
while index < array.length
yield array[index]
index += 1
end
end
答案 2 :(得分:2)
|lang|
是一个块变量。如果删除代码,可以看到.each
方法正在迭代languages
数组并将数组元素分配给块变量:
languages = ['English', 'German', 'Ruby']
languages.each do |lang|
puts lang
end
#=> English
#=> German
#=> Ruby
多行块使用do/end
语法(如示例所示),单行块使用大括号语法。例如:
languages = ['English', 'German', 'Ruby']
languages.each { |lang| puts lang}
答案 3 :(得分:1)
听起来,在上面的示例中,您创建了一个存储多个语言变量的数组。
然后,您迭代数组中的所有三个元素,并使用名为 lang 的变量表示每个元素。
lang,它在括号内只是一个变量。
希望这有助于你