【发布时间】:2013-12-30 15:39:03
【问题描述】:
下面的代码有什么问题?我在指示的行上从编译器收到以下投诉:类型参数 [Asset] 不符合 trait Worker 的类型参数界限 [T <: br.>
这是怎么回事? Worker 需要一个 Doable 的子类型,而资产扩展 Doable。
trait Doable
trait Worker[T<:Doable] {
def hey():String
}
case class Asset() extends Doable
case class Hey[Asset] extends Worker[Asset] { // << error here
def hey() = "You!"
}
【问题讨论】:
-
案例类声明中的类型参数搞砸了,
case class Hey() extends Worker[Asset] { def hey() = "You!" }工作得很好。至于为什么,不知道,虽然我并没有真正考虑过,老实说:) -
case class Hey[Asset] extends Worker[Asset]和case class Hey[T] extends Worker[T]含义相同。Asset这里只是Hey类的类型参数的新名称。见stackoverflow.com/a/19137992/406435
标签: scala