我創建一個列表如下:困惑追加到一個列表
var multiList : List[MyObj] = Nil
要追加對象名單我使用:
multiList = multiList ::: List(MyObj)
這個工作,但我現在不使用
multiList = multiList ::: MyObj
在這裏,我正在追加一個對象到列表中,在示例中(它的工作原理)它看起來在語法上看起來好像即時追加一個新的List一個列表 ?
我創建一個列表如下:困惑追加到一個列表
var multiList : List[MyObj] = Nil
要追加對象名單我使用:
multiList = multiList ::: List(MyObj)
這個工作,但我現在不使用
multiList = multiList ::: MyObj
在這裏,我正在追加一個對象到列表中,在示例中(它的工作原理)它看起來在語法上看起來好像即時追加一個新的List一個列表 ?
:::
運算符表示連接,而不是附加。元素追加有:+
。
::
方法用於將東西「預先」添加到列表中。 :::
運算符用於將一個列表添加到另一個列表。所述::
以冒號結尾,因此是「右結合」可以解釋如下
X ::ý
//將被轉換爲
y.::(x)
所以你的對象添加到空列表,你可以做
MyObj中::無
//將被轉換爲
Nil.::(MyObj)
如果你想對象的列表添加到空列表,你可以做
列表(MyObj中,MyObj中):::無
//將被轉換爲
Nil.:::(List(MyObj,MyObj中))
如果你想添加,你可以使用:+
方法。然而,這對於不同類型的收藏有不同的表現。有關性能的更多信息可以在這裏找到:Performance Characteristics
我想強調':+'作爲O(n)在列表情況下的複雜性(有必要仔細閱讀整個列表附加到它)如此如果你需要經常追加,你應該切換到另一個數據結構。請參閱[Scala集合性能特徵](http://www.scala-lang.org/docu/files/collections-api/collections_40.html) – Xion345 2013-02-25 21:09:45