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