在Scala中,":+"是什么意思?

31

我看到一些Scala代码是这样写的:

 def next(): Array[String] = someVariable.next() :+ iterator.key

someVariable拥有一个方法next()用于获取下一行,该迭代器的类型为Iterator[String]

这里的:+是什么意思?


3
你没有查阅 Scala 文档的原因是什么?http://www.scala-lang.org/api/2.11.8/index.html#scala.collection.mutable.ArrayOps@:+(elem:A):Array[A] API 文档相当全面,是我解决类似问题的首选。 - The Archetypal Paul
这是很酷的新文档(2.12),提供了漂亮的搜索功能。http://www.scala-lang.org/files/archive/api/2.12.0-M4/index.html?search=:+ - mfirry
@TheArchetypalPaul,你花在写这些东西上的时间,本可以用更好的方式回答他... - AZ_
3个回答

47
在Scala集合中,通常会出现:++:。两者都会向集合中添加元素,:+会将元素追加到末尾,+:则会将元素插入到开头。
一个好的提示是::代表集合的位置。
此外,colA ++: colB可以用于连接集合,其中:决定了结果类型。如果存在:++,它与++相同。在这两种情况下,左侧集合决定了结果类型。

1
++:++有什么区别? - f4x

30

:+是在someVariable.next()返回的任何类型上的方法。

很可能是scala.Array.:+,请参考这里

一个附加了元素的数组的副本。


这也是使用IDE会大大帮助你的情况。例如,在Intellij中,你可以使用“Quick doc”或“Jump to definition”命令查看:+来确定它来自哪里。我发现这个工具在编写Scala时非常有价值。


4
scala> List(1,2,3,4) :+ 400
res27: List[Int] = List(1, 2, 3, 4, 400)

4
尽管此代码可能解决问题,但包括解释确实有助于提高您的帖子质量。 - 4b0
2
对于这样老的问题,解释你的答案与现有答案的不同之处可能非常有帮助。 - jwvh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接