我注意到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的运算符定义?
答案 0 :(得分:14)
Methods whose names end with :
are right-associative。即。
a foo_: b
与
相同b.foo_:(a)
此规则专门针对此类方法的情况,这些方法通常(在其他语言中,如Haskell和ML)运算符,如:
或::
。