組成
部分函式通常用於定義部分的總函式:
sealed trait SuperType
case object A extends SuperType
case object B extends SuperType
case object C extends SuperType
val pfA: PartialFunction[SuperType, Int] = {
case A => 5
}
val pfB: PartialFunction[SuperType, Int] = {
case B => 10
}
val input: Seq[SuperType] = Seq(A, B, C)
input.map(pfA orElse pfB orElse {
case _ => 15
}) // Seq(5, 10, 15)
在此用法中,按照與 orElse
方法的連線順序嘗試部分函式。通常,提供匹配所有剩餘案例的最終部分函式。總的來說,這些功能的組合起到全部功能的作用。
此模式通常用於分離關注點,其中函式可以有效地作為不同程式碼路徑的排程程式。這是常見的,例如,在 Akka Actor 的接收方法中 。