使用Scala 2.10.3。以下代码适用于我:
val sequence = new ListBuffer[Int]()
sequence.+=:(x)
但如果我写:
val sequence = new ListBuffer[Int]()
sequence +=: x
我明白了:
value +=: is not a member of Int
sequence +=: x
^
我错过了什么?
答案 0 :(得分:4)
任何以:
结尾的运算符都是右关联的。
所以当你写:
sequence +=: x
它被解析为:
x.+=:(sequence)
当然失败了,因为x
没有+=:
方法
答案 1 :(得分:1)
在Scala中,以冒号结尾而不是左边的参数调用以冒号结尾的方法,所以你的第二个例子是
x.+=:(sequence)
由于Int
没有这样的运算符而失败。
答案 2 :(得分:1)
+=:
是一个前置运算符(如::
表示不可变列表)所以正确关联是有意义的
1 +=: 2 +=: 3 +=: ListBuffer() += 4 += 5 += 6
// ListBuffer(1, 2, 3, 4, 5, 6)