本章要点:
- 标识符由字母,数字或运算符构成
- 一元和二元操作符其实是方法调用
- 操作符优先级取决于第一个字符,而结合型取决于最后的
- apply和update方法在对expr(args)表达式求值时被调用
- 提取器从输入中提取元组或值的序列
1、标识符
变量、函数、类等的名称统称为标识符。
我们可以在反引号中包含任何的字符序列,例如val `val`=42 ,这种方法可以使用某些无法使用的保留字。
2、中置操作符
1 to 10
1.to(10)
3、一元操作符
4、赋值操作符
<= >= !=不是赋值操作符
以=开头的操作符不是赋值操作符
如果a有一个名为 操作符= 的方法,那么该方法会被直接调用
5、优先级
- 最高优先级,除下列字符外的操作符
- * / %
- + -
- :
- < >
- !=
- &
- ^
- |
- 非操作符
- 最低优先级:赋值操作符
出现在同一行字符所产生的操作符优先级相同。
后置操作符的优先级低于中置操作符。
6、结合型
在scala中,所有的字符都是左结合的,除了:
用冒号结尾的操作符 赋值操作符
其中右结合的二元操作符是其第二个参数的方法
7、apply和update方法
//这种方式很有意思
f(arg1,arg2,arg3.....)
如果f不是函数或者方法,这种方式就是在调用 f.apply(arg1,arg2,arg3......)
f.apply(arg1,arg2,arg3......)=value就是在调用f.update(...)
8、提取器
即unapply方法,提取数据字段。感兴趣可以看看
9、unapplySeq方法