这一章《Scala编程》翻译的晦涩了,看原版好点
1 操作符实际是普通方法调用
1 + 2 和 (1).+(2)是一回事,因为Int类定义了+方法,可以看API
2 任何方法都可以是操作符
只要把方法表示成操作符格式,s.indexOf('o')中indexOf不是操作符,但是 s indexOf 'o'中indexOf是操作符,因为使用了操作符的标注方式
3 上面都是中缀操作符,也有前缀和后缀标操作符,如-7中的"-", "7 toLong"中的toLong,中缀操作符是二元的,前缀操作符和后缀操作符都是unary一元的,这些都是调用对象调用方法的简写形式,其实是把-7转为调用(7).unary_-
4 可以用做前缀的只有+ - ! ~
5 后缀操作符不带任何参数,如7.toLong, s.toLowerCase
6 位操作符 &与 |或 ^异或 ~每一位取反
7 位移方法 << >> >>>
左移补0 右移补1 无符号右移补0
8 任何以:结尾的操作符都是由右操作数调用,其他类型的由左操作数调用
即 a * b 是 a.*(b), a ::: b是 b.:::(a)
9 操作符优先级降序排列