我有这样的代码:
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
类型,而应使用Any
,AnyRef
或AnyVal
类型。