我正在编写一个 scala 程序,它在某些时候应该为某些任务提供一些状态更新,它也可以为任务组提供它。关键是在不同phase
的s中,细节是不同的。所以实际上这个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])
但这也不能编译。