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

1ij*_*ijk 0 ruby each for-loop coding-style keyword

我个人喜欢for在Ruby中使用关键字进行迭代,因为它从我的眼睛看起来很干净.我通常认为for可能是别名Enumerable#each,但我不知道是否正确.在最基本的例子中:

for i in (1..10)
  puts i
end
Run Code Online (Sandbox Code Playgroud)

行为与...相同

(1..10).each do |i|
  puts i
end
Run Code Online (Sandbox Code Playgroud)

只是没有创建一个新的变量范围.此外,ruby-doc

for循环在现代Ruby程序很少使用.

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

Mat*_*ira 5

行为与...相同

这是不正确的.for建立在它之上each,但它在语义上是不同的:

array = %w(a b c d)

array.each { |character| }
defined? character            # nil

for character in array; end
defined? character            # "local-variable"
Run Code Online (Sandbox Code Playgroud)

for关键字不引入新的范围.块内引入的任何变量在其外部仍然可见; 好像它是内联写的.

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