第十一章 操作符¶
标识符¶
变量、函数、类等名称统称为标识符。但是和Java不一样,scala标识符可以使用任意序列的操作符字符,还可以在反引号中包含几乎任何字符序列。
一元操作符¶
只有一个参数的操作符称之为一元操作符。如果它出现在一个参数之后,那么它就是一个后置操作符。例如:
a 标识符
上述表达式等同于调用 a.标识符()
。
以下四个操作符:
+
-
!
~
称之为前置操作符,出现在参数之前,它们被转换为对名为 unary_
操作符的方法调用。
apply和update方法¶
在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
方法。