Lift 在他们的 Comet Actors 实现中使用了 PartialFunction,你通常会在你的类中得到这个:
override def lowPriority: PartialFunction[Any,Unit] = {
case MyCaseClass1(a) => do something here
case MyCaseClass2(a) => do something here
case AlwaysPresentCaseClass => default action
}
我想做的,我不确定是否有可能拆分部分函数,以便最后一个案例可以移动到一个特征中。
所以当我有一个新的彗星演员时,我只是这样做:
class MyNewComet extends MyActorTrait {
override def lowPriority: PartialFunction[Any,Unit] = {
case MyCaseClass1(a) => do something here
case MyCaseClass2(a) => do something here
}
}
不知何故,特征 MyActorTrait 将缺少
case AlwaysPresentCaseClass => default action