什么时候,如果有的话,使用Ruby关键字“for”

时间:2014-10-16 15:45:52

标签: ruby for-loop coding-style each keyword

我个人喜欢在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循环。

这让我觉得有一个特定的技术原因反对使用。没有新的变量范围是否重要?以什么方式?

1 个答案:

答案 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关键字未引入新范围。块内引入的任何变量在其外部仍然可见;好像它是内联写的。

当您决定使用哪种表格时,您应该考虑这一事实。