Scala List.prepend(:)中的操作数顺序

时间:2015-06-23 10:54:11

标签: list scala operators

Odersky具有出色的Java语法优化,无需点和括号即可启用对象调用。即现在只需编写list.prepend(item)而不是list :: item,它也将语言运算符转换为简单的对象方法。这里,List定义了::(prepend)运算符。但是,您通常使用item :: list在Scala中将其反复写入。它表明每个(可列表)类型都定义了::(List)运算符,这是令人难以置信的。如何实现操作数反转?我无法从源代码

中找到它
class List[+A] extends AbstractSeq[A]
  def ::[B >: A] (x: B): List[B] =
    new scala.collection.immutable.::(x, this)
似乎::(val头,val尾)也代表一个类型名称。但它无论如何都不适合head :: tail模式。

1 个答案:

答案 0 :(得分:4)

任何右侧有:的运算符都会翻转其操作数。还有其他运营商也在使用它(虽然不能想到任何例子)。