hangscer

操作符

2017/02/11

N元操作符

可以这样写
a 标识符 b
其中标识符代表一个带有一个参数的方法(可能还有一个隐式参数)。
1 -> 10就是1.->(10),前者称为中置表达式(infix)。

要在自己类中定义操作符,以想要用做操作符的名称来定义方法就行。
例如,有一个Fraction类,根据下列法则来计算两个分数的乘积。


中置操作符是二元的。只有一个参数是一元操作符。如果它出现在参数之后,那么它是后置(postfix)操作符。
例如:a 标识符,等同于a.标识符()

如下四个+ - ! ~可作为前置(prefix)操作符。,出现在参数之前。
例如:-a,等同于a.unary_-(可重载)。


赋值操作符

赋值操作符的名称形式为:操作符=,以下表达式:
a 操作符= b,等同于a = a 操作符 b
注意:

  • <= >= !=不是赋值操作符
  • =开头的不是赋值操作符(== === =/=等)

unapply方法

apply方法接受参数,然后将它们组装成对象,而unapply方法接受一个对象,从中提取值。

在定义变量时,可以同时都用上applyunapply方法。

每个样式类(case clasee)都自动配备了applyunapply方法。
unapply并非一定返回对象的成员,也可以返回true或者false,一个数字等等。


unapplySeq方法

上述的unapply方法有个问题,如果可能需要返回数量不等的结果(Option[Seq[T]]而不是Option[TupleN[T]]),如何对敌?