如何以rubysh方式表示下一個循環?用於Ruby語言的C'for循環
for (r = 1; r < R; r++) {
for (i = 0; i < 4; i++) {
#do something
}
}
我想用優雅的ruby語法來表達上面的代碼。 在此先感謝。
如何以rubysh方式表示下一個循環?用於Ruby語言的C'for循環
for (r = 1; r < R; r++) {
for (i = 0; i < 4; i++) {
#do something
}
}
我想用優雅的ruby語法來表達上面的代碼。 在此先感謝。
默認情況下,我會寫在Ruby中的方式是這樣的:
for r in 1..(R-1) do
for i in 0..3 do
# Do something
end
end
但更好的方法是取範圍功能的優勢,在他的回答中指出@PedroNascimento,使用三個點而不是兩個爲了留下最後一個項目超出範圍:
for r in 1...R do
for i in 0...4 do
# Do something
end
end
這兩個更好看,更明確地表達代碼的含義。
for r in 1..R-1
for i on 0..3
do something
end
end
Here你可以找到更多Ruby的語法幫助。
請注意,這有兩個bug,並沒有做問題中的循環(它們每次運行一次)。 – 2012-07-18 17:03:12
@DarshanComputing你是對的,會做出改變。 – alex 2012-07-18 23:33:49
只是使用Range的另一個答案。
r = 5 #
(1..r-1).each do|i|
(1..3).each do |j|
puts "i => #{i} , j => #{j}"
end
end
此版本受@Pedro Nascimento的答案啓發。
r = 5 #
(1...r).each do|i|
(1...3).each do |j|
puts "i => #{i} , j => #{j}"
end
end
只是爲了讓事情更漂亮:範圍也可以有三個點,不包括最後一個數字。所以,如果這樣寫代碼將更加密切:
for r in 1...R do
for i in 0...4 do
# Do something
end
end
感謝您指出這一點;如果我知道三點範圍,我早已忘記了。我已經將其納入我的答案。 – 2012-07-18 06:49:17
太棒了!這是我總是錯誤地使用三個點的功能之一,比記住你應該只使用兩個點。因此,我總是看到三點行爲! :) – 2012-07-18 14:18:06
我永遠不會使用它。當它絕對必要時,我會使用while循環,因爲它是所有循環的「母體」。 – texasbruce 2012-07-18 06:27:55