讓我們重用日報Scala的例子:鏈接與andThen PartialFunctions在斯卡拉
type PF = PartialFunction[Int,Int]
val pf1 : PF = {case 1 => 2}
val pf2 : PF = {case 2 => 3}
,讓我們補充:
val pf3 : PF = {case 3 => 4}
andThen工作如下預期:
pf1 andThen pf2 isDefinedAt(x)
回報true
iff x == 1
(實際上,pf2
不需要是Parti alFunction所有)
不過,我預計:
pf1 andThen pf3 isDefinedAt(x)
將返回false
所有x
(即,當且僅當PF1定義,請檢查PF3),但它不只有驗證PF1。
最後,pf1 andThen pf3 lift(x)
總是導致MatchError。我寧願得到None ...我可以通過提升每個函數(如pf1.lift(x).flatMap(pf3.lift)
)來獲得此行爲,但使用純PartialFunction API有沒有更簡單的方法? (且不起重單獨每個部分的功能?)
我試試這個,但所有'apply'和'isDefinedAt' COLLED兩次。 –