以冒号结尾的方法

这里说的是一个命名约定:如果方法以冒号(:)结尾,则调用目标是运算符后面的实例。

比如下面这个例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
class Cow {
def ^(moon: Moon) = println("Cow jumped over the moon")
}

class Moon {
def ^:(cow: Cow) = println("This cow jumped over the moon too")
}

val cow = new Cow
val moon = new Moon

cow ^ moon
cow ^: moon

看一下执行结果:

1
2
Cow jumped over the moon
This cow jumped over the moon too