繁体   English   中英

附加到Scala中的列表

[英]Appending to a list in Scala

我不知道为什么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中的列表(已存在)而不必像我正在做的那样创建新列表?

接下来的代码应该可以帮助您开始。 我假设您正在处理可变集合:

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

使用MutableList

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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM