变量、函数、类等名称统称为标识符。但是和Java不一样,scala标识符可以使用任意序列的操作符字符,还可以在反引号中包含几乎任何字符序列。
a 标识符 b这样的表达式叫做中置表达式。
只有一个参数的操作符称之为一元操作符。如果它出现在一个参数之后,那么它就是一个后置操作符。例如:
a 标识符上述表达式等同于调用 a.标识符() 。
以下四个操作符:
+-!~
称之为前置操作符,出现在参数之前,它们被转换为对名为 unary_ 操作符的方法调用。
赋值操作符的名称形式为 操作符= ,以下表达式:
a 操作符= b等价于
a = a 操作符 b优先级由操作符的首字符决定。出现在同一行字符所产生的操作符优先级相同。
后置操作符的优先级低于中置操作符。
在scala中,所有操作符都是左结合的。
但是用于构造列表的 :: 操作符是右结合的。
在scala中以下函数调用语法:
f(arg1, arg2,...)等价于:
f.apply(arg1, arg2,...)而以下语法:
f(arg1, arg2,...) = value等价于
f.update(arg1, arg2, ..., value)apply 方法也经常用于伴生对象中,用来构造对象而不是显示使用 new 方法。
提取器就是一个带有 unapply 方法的对象,可以将 unapply 方法看做 apply 方法的逆向操作。
apply 方法接收构造参数,然后将它们转换成对象,而 unapply 方法接收一个对象,然后从中提取值。
unapply 方法返回一个 Option ,它包含一个元组,每个匹配的变量各有一个值与之相对应。
每个样式类都自动具备 apply 方法和 unapply 方法。