Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 如何返回选项[列表]?_Scala - Fatal编程技术网

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]
变得不必要。