Ant*_*ton -4 if-statement scala
我今天注意到了一些事 Scala有通常的OR ||,但也有|.
我的第一个想法是|严格的OR.所以true | true,将评估false.但,
val x = true
x: Boolean = true
val y = true
y: Boolean = true
x || y
res4: Boolean = true
x | y
res5: Boolean = true
Run Code Online (Sandbox Code Playgroud)
什么是|运营商?它只是一个别名吗?
与在Java中一样,单个&和|运算符与它们的通常版本做同样的事情,但没有短路.
例如,考虑表达式true || isNice().永远不会调用该方法,因为true || x它始终为true,编译器(和运行时)知道这一点.如果您坚持要评估布尔表达式的所有部分,则必须使用&或|.
编辑:为了完整性,Scala还在|模式匹配中使用for alternative模式.这是从语言参考复制的:
8.1.11模式替代语法:Pattern :: = Pattern1 {'|' Pattern1}
模式替代p1 | ...... | pn由许多替代模式pi组成.使用预期的模式类型对所有替代模式进行类型检查.它们可能不会绑定除通配符之外的变量.如果至少一个替代模式匹配v,则替代模式匹配值v.
| 归档时间: |
|
| 查看次数: |
729 次 |
| 最近记录: |