value classesは、ボックス解除のオーバーヘッドなしでタイプの安全性を達成するために使用できます。なぜscala値のクラス#toStringに大文字小文字のクラス情報が含まれていますか?
ランタイムでは、そのようなタイプ/クラスが「存在しない」という単純なタイプと見なされていたという印象を受けました(たとえば、値クラスcase class X(i: Int) extends AnyVal
は実行時には単純なInt
になります)。
しかし、あなたは値クラスのインスタンスで.toString
メソッドを呼び出して実行する場合、それは何か印刷し:
scala> val myValueClass = X(3)
myValueClass: X = 3
scala> myValueClass.toString
res5: String = X(3)
ので、私は、コンパイラは結局いくつかの情報を含んでいると思いますか?