考慮下面代碼:scala是否支持許多模式匹配的默認子句?
val first = ...
val second = ...
val third = ...
val fours = ...
first match {
case "someString" => second match {
case s:String => third match {
case MyEnum.A => //some logic
case MyEnum.B => fours match {
case Some(old:String) => //some other logic
case default=> defaulLogic
}
case default=> defaulLogic
}
case default=> defaulLogic
}
case default=> defaulLogic
}
private def defaulLogic()= {
//log error here
}
有沒有把case default
邏輯到一個地方,而不是在每一個模式匹配複製它的一種方式?
注意
目前只有match-case
statments頂部,其實有更多的案件。
將嘗試捕捉切服務表現? – Cherry
只有在沒有匹配的情況下才拋出MatchError。如果跌破很少,那就會很快。如果fall through是常見的情況,那麼構造MatchError,捕獲堆棧跟蹤和捕獲的開銷可能很重要。 –
這很危險。這個異常可能在'some logic'塊內被拋出,然後它不應該被'defaultLogic'處理。 –