在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
Run Code Online (Sandbox Code Playgroud)
请参阅https://sites.google.com/a/stonybrook.edu/functional-programming-scala/lecture-1-4
从Scala参考书,第6.16段条件表达式,给出:
if (e1) e2 else e3
Run Code Online (Sandbox Code Playgroud)
条件e1应符合布尔类型.期望部分e2和else部分e3都符合条件表达式的预期类型.条件表达式的类型是e2和e3类型的弱最小上界(§3.5.3).