由于像+、::、->等常规运算符都是可以重载的方法,因此我想知道||和&&是否也是方法。如果这些是布尔对象中的方法,理论上它们就可以起作用。 但如果它们确实是方法,那么为什么会出现这样的情况?
if (foo == bar && buz == fol)
可能吗?如果编译器从右往左读取,这将在bar上调用&&而不是(foo == bar)
由于像+、::、->等常规运算符都是可以重载的方法,因此我想知道||和&&是否也是方法。如果这些是布尔对象中的方法,理论上它们就可以起作用。 但如果它们确实是方法,那么为什么会出现这样的情况?
if (foo == bar && buz == fol)
可能吗?如果编译器从右往左读取,这将在bar上调用&&而不是(foo == bar)
所以(foo == bar && buz == fol)将变成类似以下的内容:
val tmp1: Boolean = (foo == bar)
val tmp2: Boolean = (buz == fol)
tmp1 && tmp2
这两个方法肯定是Scala中的。
==
显然比&&
有更高的优先级。 - Fred Foo