MatchError在使用模式匹配赋值时,捕获a的最佳方法(最简洁,最清晰,最惯用)是什么?
例:
val a :: b :: Nil = List(1,2,3) // throws scala.MatchError
Run Code Online (Sandbox Code Playgroud)
到目前为止我找到的最佳方式:
val a :: b :: Nil = try {
val a1 :: b1 :: Nil = List(1,2,3)
List(a1, b1)
catch { case e:MatchError => // handle error here }
Run Code Online (Sandbox Code Playgroud)
这是否有惯用的方法?
为什么不简单
val a::b::Nil = List(1,2,3) match {
case a1::b1::Nil => {
a1::b1::Nil
}
case _ => //handle error
}
Run Code Online (Sandbox Code Playgroud)
?
Kim的解决方案略有改进:
val a :: b :: Nil = List(1, 2, 3) match {
case x @ _ :: _ :: Nil => x
case _ => //handle error
}
Run Code Online (Sandbox Code Playgroud)
如果您可以提供有关如何处理错误的更多信息,我们可以为您提供更好的解决方案.