如何在Scala上分配值选项[List[String]]

如何在Scala上分配值选项[List[String]],string,list,scala,option,String,List,Scala,Option,这个问题是关于在Scala中分配参数值选项[List[String]] 我的代码: def mapListString(pList : Option[List[String]]) = pList match { case None => "-" case Some(cocok) => cocok case _ => "?" } 列表在Scala中是不可变的。不能在同一列表中追加/预加和值。如果您这样做,您将得到一个新的列表,其中包含添加的值 一种可能的

这个问题是关于在Scala中分配参数值
选项[List[String]]

我的代码:

def mapListString(pList : Option[List[String]]) = pList match {
    case None => "-"
    case Some(cocok) => cocok
    case _ => "?"
}

列表
在Scala中是不可变的。不能在同一列表中追加/预加和值。如果您这样做,您将得到一个新的
列表
,其中包含添加的值

一种可能的实现如下所示:

scala> :paste
// Entering paste mode (ctrl-D to finish)

  val pList: Option[List[String]] = Some(List("hello"))
  val result = pList match {
    case None => Some(List("-"))
    case Some(cocok) => Some("x" :: cocok)
  }

// Exiting paste mode, now interpreting.

pList: Option[List[String]] = Some(List(hello))
result: Some[List[String]] = Some(List(hello, x))

Scala支持不变性,并为您提供方便的语法来使用它们。但是,可变列表确实存在于Scala中,例如,您可以在
Scala.collection.mutable.MutableList中找到一个,您不能。这样的参数在Scala中是不可变的。顺便说一句,在Scala中,大多数情况下是基于不变性的。我建议你看看相关的文档。你想“分配”什么?显示一个“伪代码”,说明您正在尝试执行的操作,即使它没有编译。Cchantep:我已经对操作值执行了Dima:操作。这是关于列表的,但是参数as
Option
是不可变的,没有可选的可变类型。您是对的,但我不确定OP的意思是什么。我认为他想要附加到同一个列表中,而不管它是否包含在新选项中。