在Coursera的 Scala 课程中(讲座1.4,约3分钟), Martin Odersky 表示true && e
表达总是返回{{1} (e是任何对象)。表达式e
也会返回false || e
。他解释说,有时最后的表达并不总是被评估。
但是当我运行这些表达式时,我得到e
。
对于error: type mismatch
,我得到true && 5
最近Scala是否进化过,或者我做错了什么?
答案 0 :(得分:6)
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 Reference book第6.16段条件表达式,给出:
if (e1) e2 else e3
条件e1应符合布尔类型。当时的一部分 e2和else-part e3都预期符合预期 条件表达式的类型。条件的类型 表达式是e2类型的弱最小上界(§3.5.3) 和e3。