Ruby Do循环和迭代

时间:2011-11-10 19:27:15

标签: ruby-on-rails ruby iteration

是否有内置的方法来编写记录号,这样我就不必创建变量并增加它?只是在这一点上开发实践。 file.recnumber

<% i = 1%>
<% @files.each do |file| %>

<%= i %>. <%= file %> (<%= file.size %>)k<br /> 
<% i = i + 1%>

<% end %>

4 个答案:

答案 0 :(得分:4)

我认为你正在寻找each_with_index,它将索引作为块的第二个参数传递。

如果你想做一些比each更复杂的事情,最近的Ruby版本还包括一个with_index方法,你可以链接到任何Enumerable方法来获得带索引的版本。例如:

('a'..'z').map.with_index {|letter, index| "#{index} #{letter.upcase}" }

答案 1 :(得分:3)

<% files.each_with_index do |file, index| %>
    ...
<% end %>

答案 2 :(得分:1)

实际上,io对象和文件对象确实有 lineno 方法。

File.open("test.txt") do |file| 
  file.each{|line| puts "#{file.lineno}: #{line}"}
end

答案 3 :(得分:0)

另一种选择是使用HTML有序列表:

<ol>
<% ["one", "two", "three"].each do |file| %>
  <li>file <%= file %></li>
<% end %>
</ol>

将为您提供类似以下的内容,您可以使用CSS轻松设置样式:

1. file one
2. file two
3. file three