直到迴圈
我們都習慣了 while 語法,它會在條件被評估為 true 時執行它的主體。如果我們想要實現一個 until 迴圈,執行一個迴圈直到條件被評估為 true 怎麼辦?
在 Julia 中,我們可以通過建立一個 @until 巨集來執行此操作,該巨集在滿足條件時停止執行其主體:
macro until(condition, expression)
quote
while !($condition)
$expression
end
end |> esc
end
這裡我們使用了函式連結語法|>,它相當於在整個 quote 塊上呼叫 esc 函式。esc 函式可以防止巨集衛生應用於巨集的內容; 如果沒有它,巨集中的變數範圍將被重新命名,以防止與外部變數發生衝突。有關詳細資訊,請參閱有關巨集觀衛生的 Julia 文件。
你可以在此迴圈中使用多個表示式,只需將所有內容放在 begin ... end 塊中:
julia> i = 0;
julia> @until i == 10 begin
println(i)
i += 1
end
0
1
2
3
4
5
6
7
8
9
julia> i
10