比較運算子和許多其他語言相似,不過也為數學愛好者多準備了一些選項。
在相等性方面,運算子有==(等於)以及!=或≠(不等於)。
txt = "abc"
txt == "abc" # true
txt != "abc" # false
txt ≠ "abc" # false (synonym for !=)
此外,還有各種大於、小於的運算子。
1 < 3 # true
3 > 3 # false
3 <= 3 # true
3 ≤ 3 # true (synonym for <=)
4 >= 3 # true
4 ≥ 3 # true (synonym for >=)
和 Julia 的許多地方一樣,用對編輯器就能輕鬆輸入這些數學符號。輸入\ne、\le或\ge,再按TAB,就能得到≠、≤或≥。
上一個例子只用到數字,不過我們會在課程大綱的其他部分看到,各種其他型別也具有順序的概念,可以用大於、小於來比較。
比較運算子可以串接起來,寫出清楚又精簡的語法:
n = 3
1 ≤ n ≤ 5 # true (n "between" two limits)
上一個例子等同於1 ≤ n && n ≤ 5。
if分支以下是if敘述的完整形式:
if conditional1
statements...
elseif conditional2
statements...
else
statements...
end
不需要括號()或大括號{},而縮排「只是」為了提升可讀性_(不過可讀性非常重要!)_。
elseif和else都是選用的,而且可以有好幾個elseif區塊。
不過,end是必需的。
也可以巢狀使用if敘述,不過你可以透過善用括號、縮排和註解來幫助可讀性。
if敘述最短的形式大概像這樣:
if n < 0
n = 0
end
提醒一下:只有求值結果為true或false的運算式才能當作條件使用。
Julia 刻意避開任何「真值性」的概念,所以零值、空字串和空陣列都_不_等同於false。
一個簡單又常見的情況,是根據條件從兩個值中挑選一個。
和許多語言一樣,Julia 也有三元運算子,可以讓這種寫法更精簡。
語法是conditional ? value_if_true : value_if_false。
所以前面的例子可以改寫成:
n = n < 0 ? 0 : n
編譯器不要求加括號,但加上括號可以提升可讀性。
match敘述嗎?目前 Julia 的基礎語言中並沒有 match/case 這類結構。
簡單的情況,建議使用if..elseif..else。
如果需要像 Scala 那樣複雜的模式比對,Match.jl套件很受歡迎。
不過,和大多數第三方套件一樣,Match在 Exercism 的測試執行器裡無法使用。