scala追加到一个可变的LinkedList

wei*_*ima 16 collections scala mutable

请检查一下

import scala.collection.mutable.LinkedList

var l = new LinkedList[String]

l append LinkedList("abc", "asd")

println(l)
// prints 
// LinkedList()
Run Code Online (Sandbox Code Playgroud)

import scala.collection.mutable.LinkedList

var l = new LinkedList[String]

l = LinkedList("x")
l append LinkedList("abc", "asd")

println(l)
// prints 
// LinkedList(x, abc, asd)
Run Code Online (Sandbox Code Playgroud)

为什么第二个代码片段有效,但第一个代码片段不起作用?这是在Scala 2.10上

dre*_*xin 22

文件说If this is empty then it does nothing and returns that. Otherwise, appends that to this..这就是你所观察到的.如果你真的需要一个可变列表,我建议你使用scala.collection.mutable.ListBuffer它,你可以使用它

val lb = new ListBuffer[Int]

scala> lb += 1
res14: lb.type = ListBuffer(1)

scala> lb
res15: scala.collection.mutable.ListBuffer[Int] = ListBuffer(1)

scala> lb ++= Seq(1,2,3)
res17: lb.type = ListBuffer(1, 1, 2, 3, 1, 2, 3)

scala> lb
res18: scala.collection.mutable.ListBuffer[Int] = ListBuffer(1, 1, 2, 3, 1, 2, 3)
Run Code Online (Sandbox Code Playgroud)

  • 但为什么会这样呢?为什么不追求自我而不管元素的数量?这不是"可变"系列的预期吗? (2认同)