在rails中"each ... do"或"for ... in"循环之间的区别

dan*_*iel 7 loops ruby-on-rails ruby-on-rails-3

可能重复:
Ruby中的"for"是什么

嘿.我的问题是,当我遍历数组时,这些循环是否相同.感谢你的时间!

<% for track in @tracks %>
Run Code Online (Sandbox Code Playgroud)

要么

<% @tracks.each do |track| %>
Run Code Online (Sandbox Code Playgroud)

cam*_*cam 9

它们是不同的(尽管它可能对您的目的无关紧要).

for 不会创建新范围:

blah = %w(foo bar baz)
for x in blah do
   z = x
end
puts z # "baz"
puts x # "baz"
Run Code Online (Sandbox Code Playgroud)

.each 为块创建新范围:

blah.each { |y| a = y }
puts a # NameError
puts y # NameError
Run Code Online (Sandbox Code Playgroud)

  • @Sam:http://en.wikipedia.org/wiki/Scope_(programming)请注意我的例子中的`x`和`z`变量如何在`for`循环后访问,但是`a`和`y `不能在传递给`each`的块之外访问. (2认同)