0

我创建一个这样的列表:

var multiList : List[MyObj] = Nil 

要将对象附加到此列表,我使用:

multiList = multiList ::: List(MyObj)

这有效,但我不应该使用

multiList = multiList ::: MyObj

在这里我将一个对象附加到列表中,而在示例中(有效)它在语法上看起来好像我将一个新列表附加到一个列表中?

4

2 回答 2

3

运算符的:::意思是连接,而不是附加。有:+元素附加。

于 2013-02-25T14:13:40.477 回答
1

::方法用于将内容“添加”到列表中。:::运算符用于将一个列表添加到另一个列表。以::冒号结尾,因此是“右结合”,可以解释如下

x :: y

// 将被翻译成

y.::(x)

因此,要将您的对象添加到一个空列表中,您可以这样做

MyObj :: 无

// 将被翻译成

无::(MyObj)

如果您想将对象列表添加到空列表中,您可以这样做

List(MyObj, MyObj) ::: 无

// 将被翻译成

Nil.:::(List(MyObj, MyObj))

如果您确实想追加,可以使用该:+方法。然而,这对于不同类型的集合执行不同。有关性能的更多信息可以在这里找到:性能特征

于 2013-02-25T14:16:42.833 回答