【发布时间】:2017-04-18 18:16:31
【问题描述】:
我已经定义了以下类层次结构,我想将类型参数限制为符合Double...
sealed abstract class Quantity[-T](value: T)(implicit ev: T <:< Double)
case class DiscreteQuantity(value: Long) extends Quantity[Long](value)
case class ContinuousQuantity(value: Double) extends Quantity[Double](value)
...是否可以重写上面的层次结构,以便具体类型是值类?从文档中我知道值类不能扩展,因此排除了Quantity 继承自AnyVal。为了让具体类从AnyVal 继承,我需要使Quantity 成为一个特征,这很好,但是我失去了类型参数上的逆变注释。
想法?
【问题讨论】:
-
您开始的代码不起作用:“无法证明 Long <: double><:< 不包括弱一致性。
标签: scala value-class