repeat 會啟動無限迴圈,像是沒有終止條件的 while,程式會在迴圈中執行,永遠不會停,那要有停止辦法才對,沒錯,就是關鍵字 break。
用 [R] 第6篇 資料操作 (下) 裡提到的 sample 來當作取亂數的方式,下面的程式會持續執行,當 a >= b 時,就將 b 設定成 a,然後再隨機亂數產生 b,重複執行,直到程式走到 break,也就是 a < b 時。break 能運用的地方不只在 repeat 中,跟迴圈有關的皆能使用,像是上篇提到的 while / for 皆可以使用。
> a <- sample(1:5, size=1)
> repeat {
b <- sample(1:5, size=1)
print(a)
print(b)
if((a - b) < 0) {
break
} else {
a <- b
}
}
[1] 3 # a
[1] 1 # b
[1] 1 # a
[1] 1 # b
[1] 1 # a
[1] 4 # b
next 是跳過的指令,不是跳出結束迴圈,所以迴圈依然會繼續執行,只是當下這一次不往下繼續執行。下面的程式在 i 為 1, 2 時,印出 a 後就執行 next,迴圈內的程式就不繼續,然後到下個 i,如果沒有 next 指令,結果會是 ababbbb,next 讓程式在印出 a 後跳過印 b。> for(i in 1:5) {
if(i <= 2) {
print('a')
next
}
print('b')
}
[1] "a"
[1] "a"
[1] "b"
[1] "b"
[1] "b"
return 是在函式結束時回傳 value 用的。
沒有留言:
張貼留言