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