6

次のコードでは、「x」に型の不一致があることを示すコンパイルエラーが発生しています。

val someRef: java.lang.Long = 42L
someRef match {
  case x: Long => println("The answer: " + x)
  case _ => println("Unknown")
}

マッチステートメントでScalaにsomeRefの自動アンボックスを設定するにはどうすればよいですか?

4

1 に答える 1

12

型システムは、このレベルでのボクシングについては知りません。Anyしかし、が存在する場合、ボックス化Longされたものは実際には(おそらく)単なるLongAnyValクラス継承ツリーの一部から)であると想定されていることを知っています。それで:

val someRef: java.lang.Long = 42L
(someRef: Any) match {
  case x : Long => println("The answer is " + x)
  case _ => println("What answer?")
}
于 2011-10-11T16:40:51.180 に答える