一、运算符等价于方法
(一)运算符即方法
op运算符与.op方法调用是等价的,op表示运算符:+、-、*、/……- 演示
x + y与x.+(y)的等价性 
(二)方法即运算符
1、单参方法
val str = "abcdef"
val x1 = str.indexOf('c')
val x2 = str indexOf 'c'
str.indexOf('c') 与 str indexOf 'c' 是等价的

2、多参方法
val x3 = str.substring(2, 4)
val x4 = str substring (2, 4) // 如果参数有多个,需要用小括号包起来
str.substring(2, 4) 与str substring (2, 4)是等价的

3、无参方法
val x5 = str.toUpperCase()
val x6 = str.toUpperCase // 方法调用时如果不需要传入任何参数,小括号可以省略
val x7 = str toUpperCase // 这种写法,如果没有参数,则括号不用写
注意:使用后缀运算符toUpperCase之前必须导入scala.language.postfixOps类,否则会报错

import scala.language.postfixOps
val x5 = str.toUpperCase()
val x6 = str.toUpperCase // 方法调用时如果不需要传入任何参数,小括号可以省略
val x7 = str toUpperCase // 这种写法,如果没有参数,则括号不用写

二、Scala运算符
(一)运算符分类表
| 运算符类型 | 运算符 |
|---|---|
| 算术运算 | +、-、*、/ |
| 关系运算 | >、<、>=、<= |
| 逻辑运算 | `&& 、 |
| 位运算 | `>>、>>>、<< 、~、 &、 |
| 比较运算 | ==、!= |
三、运算符种类
(一)中缀运算符(Infix Operator)
- 运算符符在两个操作数之间,
2 + 3等同于2.+(3)

(二)前缀运算符(Prefix Operator)
-
运算符在唯一的操作数之前 :
-1、+3、~0xFF、!false -
-1等同于1.unary_-,前缀运算符如同中缀运算符一样,也是方法调用的另一种方式,不同的是,方法名要在符号前加上前缀unary_。

能作为前缀运算符的运算符只有+、-、!、~四种。如果你自己定义了unary_!方法就可以使用!前缀运算符来调用方法了,但是即使你定义了unary_*,*也不能用来调用该方法,因为*不是四种可用的前缀运算符之一。

(三)后缀运算符(Postfix Operator)
- 运算符在唯一的操作数之后
str toUpperCase等同于str.toUpperCase(),后缀运算符不用点或括号调用无参方法。在Scala里,方法调用的空括号可以省略,但是如果去掉括号可能造成副作用就带上括号。

215

被折叠的 条评论
为什么被折叠?



