Julia 的比較運算子與許多其他語言相似,不過為數學愛好者多準備了一些選項。
判斷是否相等時,運算子有==(等於)以及!=或≠(不等於)。
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
編譯器並不要求加上括號,但括號可以提升可讀性。
在這個練習中,你將撰寫程式碼來分析汽車工廠組裝線的生產情形。
組裝線的速度範圍可以從 0(關閉)到 10(最高)。
在最低速度(1)時,每小時可以生產 221 輛車。
產量會隨速度呈線性成長。
因此當速度設為 4 時,每小時應該生產 4 * 221 = 884 輛車。
不過,速度越快,生產出瑕疵車的可能性也越高,這些瑕疵車之後必須被丟棄。
你有三個任務。 每個需要實作的函式都接受一個整數參數,也就是組裝線的速度。
實作 success_rate() 方法,計算在指定速度下,產品能夠正確無誤地製造出來的機率。
下表說明速度如何影響成功率:
0:成功率 0%。1 到 4:成功率 100%。5 到 8:成功率 90%。9:成功率 80%。10:成功率 77%。julia> success_rate(10)
0.77
實作 production_rate_per_hour() 方法,計算組裝線每小時的產量,並將成功率納入考量。
julia> production_rate_per_hour(6)
1193.4
請注意,回傳的值是浮點數。
實作 working_items_per_minute() 方法,計算每分鐘能生產多少輛可用的車:
julia> working_items_per_minute(6)
19
請注意,回傳的值是整數:未完成的產品不會計入。