2015-08-24 46 views
0

我想添加一个元素到scala的seq结尾。但它没有奏效。有人可以帮忙吗?感谢如何将元素添加到scala中的seq结尾?

val data = Seq(
    Vectors.dense(1.0, 2.0), 
    Vectors.dense(2.0, 4.0), 
    Vectors.dense(3.0, 6.0) 
) 
data :+ Vectors.dense(4.0, 8.0) // didn't work 
println(data) 

所示
println结果表明List([1.0,2.0], [2.0, 4.0], [3.0,6.0])

+1

的说明文件':上['Seq'](http://www.scala-lang.org/api/current/#scala.collection.Seq)+'方法包含一个与您问题中的代码几乎完全相同的示例。 –

回答

6

SEQ是不可变的结构。当你添加新的元素时,新的结构被创建并返回,但val“数据”保持不变。

尝试

val newData = data :+ Vectors.dense(4.0, 8.0) 
println(newData) 
+1

也有http://www.scala-lang.org/api/2.11.4/index.html#scala.collection.mutable.Seq – oluies

+0

如果我想创建一个foreach循环并在每次添加一个向量,我应该用什么来代替seq,因为它是不可变的? –

+1

您可以使用方法内部的可变秒,然后返回可变实例。使用不可变可能会一样快。 注意 http://docs.scala-lang.org/overviews/collections/performance-characteristics.html – oluies