scala - method ::在List中如何工作?

时间:2015-02-14 12:18:15

标签: scala

我注意到List类定义了方法::,它在列表的开头添加了一个元素

def ::(x: A): List[A]

示例:

1 :: List(2, 3) = List(2, 3).::(1) = List(1, 2, 3)

但是,我很困惑scala编译器如何识别这种转换?因为就我而言,

1 :: List(2,3)

应该提出error: :: is not a member of Int

我是否想念scala的运算符定义?

1 个答案:

答案 0 :(得分:14)

使用中缀运算符表示法调用

Methods whose names end with : are right-associative。即。

a foo_: b

相同
b.foo_:(a)

此规则专门针对此类方法的情况,这些方法通常(在其他语言中,如Haskell和ML)运算符,如:::