0

我正在编写一个 scala 程序,它在某些时候应该为某些任务提供一些状态更新,它也可以为任务组提供它。关键是在不同phase的s中,细节是不同的。所以实际上这个Detailstrait 有多种实现方式,这里我没有包括在内。

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])但这也不能编译。

4

1 回答 1

0

该符号:>不存在-您可能打算使用>:.

但这仍然无法编译,因为您想S成为Details(例如SpecialDetails,而不是超类型(例如Any)的子类型。

def receiveStatus[S <: Details](status: StatusMessage[S])
于 2015-12-01T15:29:43.187 回答