1

私はこのようなことをしたい:

val a = v match {
   case 1 => 1
   case 2 if (condition) => logging
   case 2 if (other conditions) => 3
   case 2 if (more conditions) => 4
   case _ => 5
}

これで最初のケース 2 のログだけを返したいのですが、それ以外の場合はフォールスルーして、何が返されるかを確認します

編集:更新

4

2 に答える 2

5

Scalaのケースマッチングは「失敗」しませんが、私が正しく理解していれば、これはあなたが望むことをするでしょう。

val a = v match {
  case 1 => 1
  case 2 => {
    logging // I'm assuming `logging` is some Unit
    if(some condition) 3
    else if(some other condition) 4
    else 5
  }
  case _ => 5
}
于 2012-09-18T20:58:12.460 に答える
2

このようなもの?

の場合v == 2aが割り当てられloggingます それ以外の場合aは の値が割り当てられますv

val a = v match {
   case 2 => logging
   case _ => v
}
于 2012-09-18T20:19:53.793 に答える