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
Clojure 相等性指南,特别是其中数字那一节,有更详细的说明。
在这个练习中,你将编写代码来分析汽车工厂装配线的生产情况。装配线的速度可以从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。