何时(如果有的话)使用 Ruby 关键字"for"



我个人喜欢在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关键字没有引入新的作用域。块内部引入的任何变量在块外部都保持可见;就好像它是内联编写的一样。

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

最新更新