Scala 如何返回选项[列表]?
我有这样一个案例类:Scala 如何返回选项[列表]?,scala,Scala,我有这样一个案例类: case class ColorDetails(color: Color = Color(), shades: List[Shades] = Nil) 我有以下几种方法可以很好地工作: final case class GetColorDetails(replyTo: ActorRef[Option[ColorDetails]]) extends ColorCommand .... case G
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
但我得到了错误:类型不匹配,预期选项[List[ColorDetails]],实际:List[ColorDetails]
我怎样才能解决这个问题
如果我尝试返回Some
,我会得到']'预期值,但'('发现
错误
scala> case class Color(color: String)
defined class Color
scala> Some(List[Color("red")])
<console>:1: error: ']' expected but '(' found.
Some(List[Color("red")])
^
scala>case类颜色(颜色:字符串)
定义类颜色
scala>Some(列表[颜色(“红色”)])
:1:错误:“]”应为“”,但找到了“(”。
一些(列表[颜色(“红色”)])
^
如果要返回一个选项[List[ColorDetails]]
,可以按如下操作:
Some(myList)
其中myList
是一个列表[ColorDetails]
,对于空选项,只需None
当然,根据应用程序的不同,可能不需要在选项中包装一个列表(因为空列表可能已经用来表示没有任何内容),但这取决于您的设计。我是scala新手。我尝试过
一些(列表[颜色(“红色”))
但是我得到了一个错误错误:']'预期但'('发现
)。我用输出Some(列表(颜色(“红色”))
更新了问题。在Scala中,方括号用于类型。请注意,这相当于写入Some(列表[颜色](颜色(“红色”))
,但类型已经从参数中推断出来,因此类型定义[Color]
变得不必要。