“true&& E”在Scala中返回“E”?

时间:2013-09-30 07:14:49

标签: scala

在Coursera的 Scala 课程中(讲座1.4,约3分钟), Martin Odersky 表示true && e表达总是返回{{1} (e是任何对象)。表达式e也会返回false || e。他解释说,有时最后的表达并不总是被评估。

但是当我运行这些表达式时,我得到e。 对于error: type mismatch,我得到true && 5

最近Scala是否进化过,或者我做错了什么?

1 个答案:

答案 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。