可能是重复问题:
Ruby中的“for”是什么
嘿。我的问题是,当我遍历一个数组时,这些循环是否相同。感谢您的时间!
<% for track in @tracks %>
或者
<% @tracks.each do |track| %>
可能是重复问题:
Ruby中的“for”是什么
嘿。我的问题是,当我遍历一个数组时,这些循环是否相同。感谢您的时间!
<% for track in @tracks %>
或者
<% @tracks.each do |track| %>
它们是不同的(虽然对于您的目的可能并不重要)。
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
x
和z
变量可以在for
循环后访问,但a
和y
无法在传递给each
的块之外访问。 - cam大部分情况下,您可能看不出任何区别,但这两种情况是非常不同的。
在一个情况下,您有一个直接在 Ruby 语法中的循环,而在另一个情况下,数据结构遍历会定期地向块产生。
这里没有什么区别,只是语法不同而已。
能够让它变得不同的是向块中添加元素,如计数器或更高级的功能。
<% @tracks.each do |i, track| -%>
<% #i is your counter... just and example of adding more information in the block %>
<% end -%>