我个人喜欢在Ruby中使用for
关键字进行迭代,因为它从我的眼睛看起来很干净。我通常认为for
可能是Enumerable#each
的别名,但我不知道是否正确。在最基本的例子中:
for i in (1..10)
puts i
end
的行为与
相同(1..10).each do |i|
puts i
end
只是没有创建新的变量范围。此外,ruby-doc说
现代ruby程序中很少使用
for
循环。
这让我觉得有一个特定的技术原因反对使用。没有新的变量范围是否重要?以什么方式?
答案 0 :(得分:5)
的行为与
相同
这是不正确的。 for
建立在each
之上,但它在语义上是不同的:
array = %w(a b c d)
array.each { |character| }
defined? character # nil
for character in array; end
defined? character # "local-variable"
for
关键字未引入新范围。块内引入的任何变量在其外部仍然可见;好像它是内联写的。
当您决定使用哪种表格时,您应该考虑这一事实。