2011-11-10 5 views
1

변수를 작성하고 늘릴 필요가 없도록 레코드 번호를 작성하는 기본 제공 방법이 있습니까? 이 시점에서 관행을 개발하십시오. file.recnumber?Ruby Do 반복 및 반복

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

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

<% end %> 

답변

3
<% files.each_with_index do |file, index| %> 
    ... 
<% end %> 
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 
4

블록에 두 번째 인수로 인덱스를 전달하는 each_with_index을 찾고 있다고 생각합니다.

보다 정교한 작업을 수행하려는 경우 최근 버전의 Ruby에는 with_index 메서드가 포함되어 있으므로 Enumerable 메서드와 연계하여 인덱스가있는 버전을 얻을 수 있습니다. 예를 들어 :

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

사실, IO 객체와 파일 객체는 LINENO 방법이 없습니다.

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