为什么Scala改变了关系运算符和相等运算符的相对优先级(与Java相
发布时间:2020-12-16 19:22:11 所属栏目:安全 来源:网络整理
导读:在 Java中,优先级高于==.在Scala中,反之亦然.我想知道Scala人为什么选择这种方式?其他二元运算符优先级与Java对齐(exept按位运算,但可以理解为什么它们没有给出特殊优先级). 更新:这实际上是语言规范中的错误,’'实际上Scala中的优先级高于'=='. 解决方法
在
Java中,<优先级高于==.在Scala中,反之亦然.我想知道Scala人为什么选择这种方式?其他二元运算符优先级与Java对齐(exept按位运算,但可以理解为什么它们没有给出特殊优先级). 更新:这实际上是语言规范中的错误,’<'实际上Scala中的优先级高于'=='.
解决方法
在Scala中没有反转.试试这个:
val what = 5 == 8 < 4 我得到一个编译时警告:使用`==’比较类型Boolean和Int的值总是会产生错误;很明显,编译器已将其转换为5 ==(8 <4),就像在Java中一样. 你也可以试试这个: class Foo { def ===(o: Foo) = { println("==="); this } def <<<(o: Foo) = { println("<<<"); this } def >>>(o: Foo) = { println(">>>"); this } } def foo = new Foo 然后调用foo === foo<<< foo>>> foo打印这个: <<< >>> === 这意味着它被解析为(foo ===((foo<<< foo)>>> foo)) 你能提供一个优先顺序的例子吗? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |