在 Coursera 的Scala课程(讲座 1.4,大约 3 分钟)中,Martin Odersky说表达式true && e
总是返回e
(e 是任何对象)。并且表达式false || e
也返回e
。他解释说,有时并不总是评估最后一个表达式。
但是当我运行这些表达式时,我得到error: type mismatch
. 因为true && 5
我得到found: Int(5); required: Boolean
Scala 最近是否在发展,或者我做错了什么?
在 Coursera 的Scala课程(讲座 1.4,大约 3 分钟)中,Martin Odersky说表达式true && e
总是返回e
(e 是任何对象)。并且表达式false || e
也返回e
。他解释说,有时并不总是评估最后一个表达式。
但是当我运行这些表达式时,我得到error: type mismatch
. 因为true && 5
我得到found: Int(5); required: Boolean
Scala 最近是否在发展,或者我做错了什么?
e
代表布尔表达式。
Predicate: a boolean expression to be evaluated e.g. (x >= 4), (x != 0), etc
见https://sites.google.com/a/stonybrook.edu/functional-programming-scala/lecture-1-4
来自Scala 参考书,第 6.16 段条件表达式,给出:
if (e1) e2 else e3
条件 e1 应符合布尔类型。then-part e2 和 else-part e3 都应该符合条件表达式的预期类型。条件表达式的类型是 e2 和 e3 类型的弱最小上界(第 3.5.3 节)。