对于附加到列表感到困惑

时间:2013-02-25 14:04:03

标签: scala

我创建了一个像这样的List:

var multiList : List[MyObj] = Nil 

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

multiList = multiList ::: List(MyObj)

这可行,但我不应该使用

multiList = multiList ::: MyObj

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

2 个答案:

答案 0 :(得分:3)

:::运算符意味着连接,而不是追加。元素附加有:+

答案 1 :(得分:1)

::方法用于将前缀“前置”到列表中。 :::运算符用于将一个列表添加到另一个列表。 ::以冒号结束,因此是“右关联”,可以解释如下

x :: y

//将被翻译为

Y::( x)的

因此,要将对象添加到空列表中,您可以执行

MyObj :: Nil

//将被翻译为

无::( MyObj中)

如果要将对象列表添加到空列表中,可以执行

List(MyObj,MyObj)::: Nil

//将被翻译为

Nil。:: :( List(MyObj,MyObj))

如果您确实想要追加,可以使用:+方法。然而,这对于不同类型的集合执行不同。有关性能的更多信息,请访问:Performance Characteristics