Clojure 中的數字包括:
-6、0、1、25、976和500000。-2.4、0.1、3.14、16.984025和1024.0。常見的數字型別有int和float。int是 32 位元整數,float則是 64 位元浮點數。
算術運算使用標準的算術運算子。數字可以使用標準的數值比較運算子(>、<、<=、>=)、相等運算子(=)與不相等運算子(not=)來比較。
在這個練習中,你必須依照條件執行邏輯。在 Clojure 中,常見的做法是使用cond:
(cond (= x 5) "Expression to evaluate when x equals 5"
(> x 7) "Expression to evaluate when x is greater than 7"
:else "Expression to evaluate in all other cases")
當數字需要在不考慮確切型別的情況下進行比較時,==運算子在某些情況下可能比=更合適。例如:
(== 5.0 5) ;; true as both numbers are equal when type is ignored
(= 5.0 5) ;; false as the types of numbers are also taken into account here i.e. float is different from int
在這個練習中,你會撰寫程式碼來分析汽車工廠裝配線的產量。裝配線的速度可以從 0(關閉)到 10(最高)。
以最低速度(1)運作時,每小時會生產 221 輛車。產量會隨速度呈線性成長。所以當速度設為 4 時,每小時應該生產 4 * 221 = 884 輛車。然而,速度越高,越可能生產出瑕疵車,這些車就得被丟棄。下表顯示速度如何影響成功率:
0:成功率 0%。1 到 4:成功率 100%。5 到 8:成功率 90%。9:成功率 80%。10:成功率 77%。你有兩項任務。
實作 production-rate 函式,計算裝配線每小時的生產率,並將成功率納入考量:
(production-rate 6)
;;=> 1193.4
注意,回傳的值是 double。
實作 working-items 函式,計算每分鐘可生產多少能正常運作的車輛:
(working-items 6)
;;=> 19
注意,回傳的值是 int。