2010-10-27 36 views
0

我有以下幾點:Rails - 循環但設置MAX?

@books.each do |book| 
... stuff 
end 

我很好奇,學習。我如何更新上面的內容來完成像循環遍歷@books但不超過6次,MAX/6的上限?

感謝

回答

5

做到這一點,最簡單的方法是取數組的一個切片,並遍歷是:

@books[0,6].each do |book| 
    # ... 
end 

另一種方法是保持陣列完整,當您完成後,請跳出循環:

@books.each_with_index do |book, i| 
    break if (i == 6) 

    # ... 
end 
+1

+1爲優雅。 – shoebox639 2010-10-27 15:38:39

+0

如果書沒有6項,該怎麼辦?第一個問題?試圖瞭解這是做什麼? – TheExit 2010-10-27 16:00:12

+0

這是一個簡單的數組切片,最多需要6個項目。如果數組的大小隻有3,那麼你只會得到3.第一個參數是從哪裏開始的索引,在你的情況下是0,但你可以調整這個從7到12使用'[6,6 ]' – tadman 2010-10-27 16:16:10

1
@books.each_with_index do |book, i| 
    if i >= 6 
    break 
    end 
    ... stuff 
end 
+0

紡紗通過h可能是一個非常大的名單是低效的。 Jacob Relkin的答案中描述的「break」技術是一種更好的方法。 – tadman 2010-10-27 15:38:28

+1

嘿,在我改變之前就抓住了我。 – shoebox639 2010-10-27 15:43:56

1
@books.each_with_index do |book, i| 
    break if i > 5 
    #stuff... 
end 
+0

我看到你修正了你的觀點,但你已經有了經典的「Off By One」錯誤。如果你只需要6個元素,'i'從0..5變爲0,而不是0..6。 – tadman 2010-10-27 15:41:10