多个模式匹配相同的输入变量

ide*_*xer 1 scala case pattern-matching match

我经常遇到以下问题:

val b = a match {
  case Some(a) => "1"
  case None => "n"
}
val c = a match {
  case Some(a) => "2"
  case None => "n"
}
Run Code Online (Sandbox Code Playgroud)

显然,即使只需要一次,匹配也会执行两次.我怎样才能确保编译器考虑到这一点?

om-*_*nom 8

我不认为会有任何性能提升,但您可以像这样编写代码:

val (b, c) = a match {
  case Some(a) => ("1","2)
  case None => ("n", "n")
}
Run Code Online (Sandbox Code Playgroud)