我有这样的代码:

val dm  = List[String]()
val dk = List[Map[String,Object]]()

.....

dm.add("text")
dk.add(Map("1" -> "ok"))

但是会抛出运行时java.lang.UnsupportedOperationException。

我需要声明一个空列表或空 map ,并且稍后在代码中的某些地方需要填充它们。

最佳答案

默认情况下,Scala列表是不可变的。您不能“添加”元素,但是可以通过在前面附加新元素来形成新列表。由于这是一个新列表,因此您需要重新分配引用(因此您不能使用val)。

var dm  = List[String]()
var dk = List[Map[String,AnyRef]]()

.....

dm = "text" :: dm
dk = Map(1 -> "ok") :: dk

运算符::创建新列表。您还可以使用较短的语法:
dm ::= "text"
dk ::= Map(1 -> "ok")

注意:在scala中,请勿使用Object类型,而应使用AnyAnyRefAnyVal类型。

10-06 10:44