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
詳しくは、Equalityに関するClojureガイドの、特にNumbersのセクションで説明されています。
この演習では、自動車工場の組み立てラインの生産を分析するコードを書きます。組み立てラインの速度は0(停止)から10(最大)まで設定できます。
最も低い速度(1)では、1時間に221台の車が生産されます。生産量は速度に比例して増加します。そのため、速度を4に設定すると、1時間に4 * 221 = 884台の車を生産することになります。ただし、速度が上がるほど不良品が作られる可能性が高くなり、それらは捨てなければなりません。次の表は、速度が成功率にどのように影響するかを示しています。
0:成功率0%。1から4:成功率100%。5から8:成功率90%。9:成功率80%。10:成功率77%。タスクは2つあります。
production-rate関数を実装して、成功率を考慮した組み立てラインの1時間あたりの生産率を計算します。
(production-rate 6)
;;=> 1193.4
戻り値はdoubleであることに注意してください。
working-items関数を実装して、1分あたりに何台の正常な車が生産されるかを計算します。
(working-items 6)
;;=> 19
戻り値はintであることに注意してください。