with 关键字
with关键字可以用来实现包装器的功能,新建withSample.scala文件示例如下:
1 | trait Friendly { |
用scala命令调用(scala withSample.scala),输出如下
1 | woof |
张逸的Scala中的Partial Function一文中提到PartialFunction的定义如下:
1 | trait PartialFunction[-A, +B] extends (A => B) { self => |
追本溯源,是因为这里对偏函数值的调用,实则是调用了AbstractPartialFunction的apply()方法(case语句相当于是继承AbstractPartialFunction的子类):
1 | abstract class AbstractPartialFunction[@specialized(scala.Int, scala.Long, scala.Float, scala.Double, scala.AnyRef) -T1, @specialized(scala.Unit, scala.Boolean, scala.Int, scala.Float, scala.Long, scala.Double, scala.AnyRef) +R] extends Function1[T1, R] with PartialFunction[T1, R] { self => |
看到里面用到了with PartialFunction[T1,R]。