Ruby for循环的用法?

Ruby for循环的用法?,ruby,for-loop,iterator,Ruby,For Loop,Iterator,大多数时候,当我看到Ruby中使用的for循环时,编写它的人并不熟悉Ruby。通常,当for循环被一个迭代器代替时,它的可读性要高得多,迭代器取一个块,例如each 是否存在这样的用例:for不能由带块的迭代器轻松重写,或者使用for有优势 因为for是一个关键字,所以for确实比迭代器方法快吗?for的目的是什么?我在6-8年前的Rails书籍中看到了很多关于for的循环。但不再是首选 迭代器变量的范围不同。以以下为例: numbers = [1, 2, 3] numbers.each do

大多数时候,当我看到Ruby中使用的
for
循环时,编写它的人并不熟悉Ruby。通常,当
for
循环被一个迭代器代替时,它的可读性要高得多,迭代器取一个块,例如
each

是否存在这样的用例:
for
不能由带块的迭代器轻松重写,或者使用
for
有优势


因为
for
是一个关键字,所以
for
确实比迭代器方法快吗?
for
的目的是什么?

我在6-8年前的Rails书籍中看到了很多关于
for
的循环。但不再是首选

迭代器变量的范围不同。以以下为例:

numbers = [1, 2, 3]

numbers.each do |n|
  # do nothing
end
begin
  puts n 
rescue Exception => e
  puts e.message
end

for n in numbers do 
  # do nothing
end
puts "still: #{n}"
这将产生以下输出:

# undefined local variable or method `n' for main:Object
# still: 3

Ruby社区通常首选块语法

当对每个或
使用
时,变量范围有一点不同。

for
循环中声明的变量将在循环外部可用,其中,与
中的变量一样,每个
块都是该块的本地变量,在该块外部不可用。

+1问得好。我怀疑这些反对票来自那些只使用for循环的读者,他们通常在索引上循环。啊,我们永远不会知道。无论如何,我期待着阅读讨论。我不希望它被关闭,因为问题的各个方面需要客观的答案。嗯,也许萨瓦认为他每投一次反对票就得九分……也许我是对的。迄今投票:+6,-4。以前没有见过。我没有使用过v1.8,但我知道,在1.9之前,
n
将在
数字之后的范围内。如果
n
之前已初始化(例如,
n=0
),则每个do | n |结束。无论如何,我确信sawa意识到了范围的差异,并且正在寻找任何其他的优势——如果存在的话——使用
进行
for
不必要地污染了变量空间。