【发布时间】:2016-03-05 13:48:36
【问题描述】:
我正在编写一个 scala 程序,它在某些时候应该为某些任务提供一些状态更新,它也可以为任务组提供它。重点是在不同的phases,细节不一样。所以实际上Details trait 有多种实现方式,我没有在这里介绍。
case class GroupMessage [+S <: Details]
(
id: String,
statuses: List[StatusMessage[S]]
)
case class StatusMessage [+S <: Details]
(
id: String,
phase: Phase,
statusDetails: S
)
sealed trait Details {
def getDetails: List[String]
}
现在,问题是接收此状态更新的方法,我无法正确签名。如果我只是输入def receiveStatus(status: StatusMessage),编译器会抱怨StatusMessage 采用类型参数。我以为我需要像 def receiveStatus[S :> Details](status: StatusMessage[S]) 这样的东西,但这也不能编译。
【问题讨论】:
标签: scala traits generic-variance