直到迴圈
我們都習慣了 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