在 Scala 中,列表是不可变的但是
In Scala, List is Immutable But
我是 Scala 语言的初学者。在 Scala 中,List 根据以下代码是不可变的:
scala> var list = List(1,2,3,4,5) // List created named ‘ list ’
list: List[Int] = List(1, 2, 3, 4, 5)
scala> 25 :: list // Prepend with Cons( :: ) , But here new list created.
res2: List[Int] = List(25, 1, 2, 3, 4, 5)
scala> list // print ‘ list ’
res3: List[Int] = List(1, 2, 3, 4, 5)
但是,
scala> list
res1: List[Int] = List(1, 2, 3, 4, 5)
scala> list :+= 12 // append list with :+=
scala> list
res2: List[Int] = List(1, 2, 3, 4, 5, 12)
在上面的示例中,附加了相同的 "list"。那怎么list是不可变的呢?这让我很困惑。有好心人给我解释一下吗?
http://daily-scala.blogspot.co.uk/2010/03/implicit-operator.html
:+=
不仅仅是追加,它是追加到一个新列表并重新分配变量以指向新列表。相当于list = list + 12
.
25 ++ list
正在创建一个新列表,但未将其分配到任何地方。
我是 Scala 语言的初学者。在 Scala 中,List 根据以下代码是不可变的:
scala> var list = List(1,2,3,4,5) // List created named ‘ list ’
list: List[Int] = List(1, 2, 3, 4, 5)
scala> 25 :: list // Prepend with Cons( :: ) , But here new list created.
res2: List[Int] = List(25, 1, 2, 3, 4, 5)
scala> list // print ‘ list ’
res3: List[Int] = List(1, 2, 3, 4, 5)
但是,
scala> list
res1: List[Int] = List(1, 2, 3, 4, 5)
scala> list :+= 12 // append list with :+=
scala> list
res2: List[Int] = List(1, 2, 3, 4, 5, 12)
在上面的示例中,附加了相同的 "list"。那怎么list是不可变的呢?这让我很困惑。有好心人给我解释一下吗?
http://daily-scala.blogspot.co.uk/2010/03/implicit-operator.html
:+=
不仅仅是追加,它是追加到一个新列表并重新分配变量以指向新列表。相当于list = list + 12
.
25 ++ list
正在创建一个新列表,但未将其分配到任何地方。