可能重复:
What is “for” in Ruby
嘿。我的问题是,当我遍历数组时,这些循环是否相同。感谢你的时间!
<% for track in @tracks %>
或
<% @tracks.each do |track| %>
答案 0 :(得分:9)
它们是不同的(尽管它可能对您的目的无关紧要)。
for
不会创建新范围:
blah = %w(foo bar baz)
for x in blah do
z = x
end
puts z # "baz"
puts x # "baz"
.each
为块创建一个新范围:
blah.each { |y| a = y }
puts a # NameError
puts y # NameError
答案 1 :(得分:3)
在大多数情况下,你可能不会看到任何差异,但在这两种情况下情况完全不同。
在一种情况下,您直接使用Ruby语法循环,在另一种情况下,数据结构遍历会定期产生一个块。
答案 2 :(得分:1)
这里没有区别。只是语法上的差异。
可能会有什么不同之处在于向块添加元素,例如计数器或更高级的功能。
<% @tracks.each do |i, track| -%>
<% #i is your counter... just and example of adding more information in the block %>
<% end -%>