我不知道为什么Scala决定做这个家务活,但我只是想把一个项目添加到列表中
var previousIds: List[String] = List()
我尝试了以下内容:
previousIds ::: List(dataListItem.id)
previousIds :: List(dataListItem.id)
previousIds :+ List(dataListItem.id)
previousIds +: List(dataListItem.id)
previousIds :+ dataListItem.id
previousIds +: dataListItem.id
在每个实例中,该行都将运行,但列表仍将包含0个项
当我尝试添加新列表时:
val list = List[String](dataListItem.id)
previousIds += list
我收到一个错误,列表需要是一个字符串。当我添加一个字符串
previousIds += dataListItem.id
我收到一个错误,它需要是一个列表
出于某种原因,唯一可行的方法如下:
previousIds :::= List[String](dataListItem.id)
这看起来真的太过分了,因为添加到列表应该是一个简单的选择。我不知道为什么没有别的办法。
如何将项目添加到scala(已存在)的列表中,而不必像我一样创建新列表?
答案 0 :(得分:1)
下一个代码可以帮助您开始。 我假设你正在处理可变集合:
val buf = scala.collection.mutable.ListBuffer.empty[String]
buf += "test"
buf.toList
如果您正在处理不可变集合,下一步方法会有所帮助:
val previousIds = List[String]("A", "TestB")
val newList = previousIds :: List("TestB")
有关模式详情,请参阅文档:
http://www.scala-lang.org/api/current/scala/collection/immutable/List.html
答案 1 :(得分:1)
scala> var a = scala.collection.mutable.MutableList[String]()
a: scala.collection.mutable.MutableList[String] = MutableList()
scala> a += "s"
res0: scala.collection.mutable.MutableList[String] = MutableList(s)
scala> a :+= "s"
scala> a
res1: scala.collection.mutable.MutableList[String] = MutableList(s, s)