value classes可用於實現類型安全而不需要拆箱。 我的印象是,在運行時這些類型/類將「不存在」,被視爲簡單類型(例如,在運行時,值類case class X(i: Int) extends AnyVal將是簡單的Int)。 但是,如果你調用一個值類實例的方法.toString它會打印出類似這樣: scala> val myValueClass = X(3)
myValueClass:
我試圖實現一個不佔用額外內存的選項。 我創建了一個類。空值表示無,非空值表示某些。 class Maybe[+T](private val nullable: T) extends AnyVal {
@inline final def isDefined: Boolean = {
println("isDefined called")
val res = nullab
我已經定義了下面的類層次結構,我要限制的類型參數是舒適與Double ... sealed abstract class Quantity[-T](value: T)(implicit ev: T <:< Double)
case class DiscreteQuantity(value: Long) extends Quantity[Long](value)
case class Con
我在Scala 2.10.3中使用值類(擴展AnyVal的類),但在將它們用作抽象方法的參數時遇到了一個奇怪的編譯器錯誤。 如下面的例子演示了: class ValueClass(val x: Int) extends AnyVal
trait Test {
def foo(v: ValueClass): Int
}
new Test {
override def f