1. ホーム
  2. scala

[解決済み] Scalaでswitch/case(単純なパターンマッチ)を使うには?

2022-02-13 03:15:07

質問内容

とても些細なことで行き詰っている自分に気づきました :-] 。

enumを手に入れました。

 object Eny extends Enumeration {
      type Eny = Value
      val FOO, BAR, WOOZLE, DOOZLE = Value
    }

あるコードでは、これを条件付きで数値に変換する必要がある(変数と数値の対応は文脈によって異なる)。と書いている。

val en = BAR
val num = en match {
  case FOO => 4
  case BAR => 5
  case WOOZLE => 6
  case DOOZLE => 7
}

そして、これは最初のブランチ(この場合は "case FOO => 4" )以外のすべてのブランチで "unreachable code" コンパイラーエラーを出します。私は何を間違えているのでしょうか?

解決方法は?

実際に使用しているコードは、おそらく FOO でなく foo を小文字にすると、Scala はその値を単に foo と比較するのでなく

言い換えれば

x match {
  case A => // compare x to A, because of the uppercase
  case b => // assign x to b
  case `b` => // compare x to b, because of the backtick
}