fmp*_*ard 1 scala partialfunction
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
}
Run Code Online (Sandbox Code Playgroud)
我想做什么,我不确定是否可能分割该部分功能,以便最后一个案例可以移动到特征中.
所以,当我有一个新的彗星演员时,我只是这样做:
class MyNewComet extends MyActorTrait {
override def lowPriority: PartialFunction[Any,Unit] = {
case MyCaseClass1(a) => do something here
case MyCaseClass2(a) => do something here
}
}
Run Code Online (Sandbox Code Playgroud)
不知何故,特质MyActorTrait将失踪
case AlwaysPresentCaseClass => default action
Run Code Online (Sandbox Code Playgroud)
您可以使用以下orElse方法组成部分函数:
val f1: PartialFunction[Any, String] = {
case 22 => "hallo"
}
val f2: PartialFunction[Any, String] = {
case "rara" => "welt"
}
val f = f1 orElse f2 // f falls back to f2 if undefined in f1
f(22)
f("rara")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
990 次 |
| 最近记录: |