19.5 方法名的约定
操作符就是方法,只不过在实现上使用了取巧的方法命名约定。
我们看到了方法名的第一个字母决定了优先级。
优先级从低到高的列表:
所有字符
|
^
&
< >
= !
:
+ -
* / %
所有其他的特殊字符
在这里,我们将看到它们名称的最后一个字母也有一个效果—--它决定了方法调用的目标。
如果方法以`:`结尾, 则冒号后面的实例是要操作的目标 - Scala 不允许字母作为操作符的名称, 除非使用
_
对操作符增加前缀 +、-、!和~
也是操作的目标在后.其中一元+
操作符被映射为对unary_+()
方法的 调用,而一元-操作符被映射为对unary_-()
方法的调用,以此类推。(见 19.3 节)
object OperatorDemo2 {
def main(args: Array[String]): Unit = {
val a = new A
val b = new B
a ^ b // a.^(b)
a ^: b // b.^:(a) 因为是: 结尾的方法, 所以b是操作的目标
}
}
class A {
def ^(b: B) = println("这是调用的 A 的方法")
}
class B {
def ^:(a: A) = println("这是调用的 B 的方法")
}