1. 标识符
-
变量名、函数名、类名等统称为标识符,Scala可以使用任何字符来作标识符,比如
()!#%&×+-/:<>=?@\^|~
等。 -
反引号中可以使用任何字符序列。
- 1
- 2
- 3
- 4
- 1
- 2
- 3
- 4
2. 中置操作符
-
操作符要接两个参数,分别位于操作符两边。
-
a 标识符 b
等价于a.标识符(b)
。
- 1
- 2
- 3
- 4
- 5
- 1
- 2
- 3
- 4
- 5
3. 一元操作符
-
只有一个参数的操作符成为一元操作符,操作符的位置可能位于参数的前或后,所有有下面两种情况。
-
a 标识符
等价于a.标识符()
,标识符 a
等价于a.unary_标识符
。
- 1
- 2
- 3
- 4
- 5
- 6
- 1
- 2
- 3
- 4
- 5
- 6
4. 赋值操作符
- 赋值操作符的形式为
操作符=
,表达式是a 操作符= b
,等价于a = a 操作符 b
。
- 1
- 2
- 1
- 2
<=、>=、!=、==、===、=/=
等不是赋值操作符,
5. 优先级
-
后置操作符优先级低于中置操作符,
a 中置操作符 b 后置操作符
等价于(a 中置操作符 b) 后置操作符
。 -
符号优先级如下表所示:
操作符 优先级 除下面字符以外的操作符 1(最高) * / % 2 + - 3 : 4 < > 5 != 6 & 7 ^ 8 | 9 赋值操作符 10(最低)
6. 结合性
- Scala除冒号操作符和赋值操作符是右结合,所有其他操作符都是左结合。
- 1
- 2
- 3
- 4
- 1
- 2
- 3
- 4
- 右结合的的第二个参数就是方法,比如
2::Nil
等价于Nil.::(2)
。
7. apply和update方法
- 函数或方法位于赋值语句的等号左侧,调用的是update方法,否则调用的apply方法。
- 1
- 2
- 3
- 4
- 5
- 6
- 1
- 2
- 3
- 4
- 5
- 6
8. 提取器unapply
-
提取器:是一个带有unapply方法的对象,可以当做是伴生对象apply的方法的反操作。
-
unapply接受一个对象,从中提取值。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
-
每个样例类都会自动具备apply方法和unapply方法,样例类后面章节会讲解,这里只要了解就可以。
-
提取器可以只测试输入而不真正将其值提取出来,只返回一个Boolean。
9. unapplySeq方法
- 使用unapplySeq方法可以提取任意长度的值序列,它返回一个Option[Seq[A]],A是被提取的类型。
- 1
- 2
- 3
- 4
- 5
- 6
- 1
- 2
- 3
- 4
- 5
- 6