"true && E"在Scala中返回"E"?

Gra*_*ate 0 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最近是在进化还是我做错了什么?

Dav*_*lli 6

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).

  • @Graduate:`e`不是任何对象,是结果类型为`Boolean`的任何表达式,例如`{println("text"); 1 == 2}`. (2认同)