我有一个这样的案例类:
case class ColorDetails(color: Color = Color(),
shades: List[Shades] = Nil)
我在下面可以正常使用
: final case class GetColorDetails(replyTo: ActorRef[Option[ColorDetails]])
extends ColorCommand
....
case GetColorDetails(replyTo) =>
if (state.color.isEmpty) {
replyTo ! None
} else {
replyTo ! Some(ColorDetails(state.color, state.shades))
}
Effect.none
但是,我现在尝试按以下方式实现GetColors
:
final case class GetColors(replyTo: ActorRef[Option[List[ColorDetails]]])
extends ColorCommand
....
case GetColors(replyTo) =>
if (state.color.isEmpty) {
replyTo ! None
}
else {
replyTo ! List[ColorDetails(state.color, state.shades)]
}
Effect.none
但是我遇到了错误:Type mismatch, expected Option[List[ColorDetails]], actual: List[ColorDetails]
我该如何解决?
如果我尝试返回Some
,则会收到']' expected but '(' found
错误
scala> case class Color(color: String)
defined class Color
scala> Some(List[Color("red")])
<console>:1: error: ']' expected but '(' found.
Some(List[Color("red")])
^
答案 0 :(得分:3)
如果要返回Option[List[ColorDetails]]
,可以按以下步骤操作:
Some(myList)
其中myList
是List[ColorDetails]
,简单地是None
,表示空的选项。
当然,根据应用程序的不同,可能没有必要期望列表包裹在选项中(因为可能已经使用了一个空列表来表明事实那里没有东西),但这取决于您的设计