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 的方法")
}

Copyright © 尚硅谷大数据 2019 all right reserved,powered by Gitbook
该文件最后修订时间: 2019-07-02 08:12:45

results matching ""

    No results matching ""