我正在运行Scala 2.10.2。我想创建一个列表,然后向列表添加一些元素,并期望在调用列表名称时看到所有元素。但我观察到了一些相当奇怪的东西(至少对于我这个新手来说很奇怪)。以下是我在sbt控制台
中尝试做的事情:
scala> val l = 1.0 :: 5.5 :: Nil
l: List[Double] = List(1.0, 5.5)
scala> l
res0: List[Double] = List(1.0, 5.5)
scala> l ::: List(2.2, 3.7)
res1: List[Double] = List(1.0, 5.5, 2.2, 3.7)
scala> List(l) :+ 2.2
res2: List[Any] = List(List(1.0, 5.5), 2.2)
scala> l
res3: List[Double] = List(1.0, 5.5)
scala>
首先,我创建了一个包含两个元素(1.0和5.5)的列表l
。我调用l
并得到了我期望的两个元素。现在我尝试使用:::
向列表中添加另一个元素,它返回一个新列表,其中包含我添加的新元素(2.2和3.7)。太好了!我甚至查看了其他人的代码寻求帮助:Appending an element to the end of a list in Scala,以使用新的构造函数:+
。所以在这个阶段,我很开心,但是当我调用l
时,我得到了意外的结果:'res3: List[Double] = List(1.0, 5.5)。
那么我添加的元素在哪里?如何正确地添加这些元素,以便当我调用l
时,我可以得到一个包含所有我添加的东西的新列表?
l
。 - Hunter McMillen