为什么我可以打电话给+;=在Scala集合上使用单个参数?

为什么我可以打电话给+;=在Scala集合上使用单个参数?,scala,Scala,有一个方法def+=(elem1:a,elem2:a,elems:a*):Set.this.type,但我可以用一个参数调用此方法: val s = scala.collection.mutable.Set(1, 2) s += 4 实际调用的是什么方法?对于带有单个参数的+=,似乎没有重载。上述方法签名的目的是什么?好吧,这里有一点调查: scala> val s = scala.collection.mutable.Set(1,2) s: scala.collection.mutab

有一个方法
def+=(elem1:a,elem2:a,elems:a*):Set.this.type
,但我可以用一个参数调用此方法:

val s = scala.collection.mutable.Set(1, 2)
s += 4

实际调用的是什么方法?对于带有单个参数的
+=
,似乎没有重载。上述方法签名的目的是什么?

好吧,这里有一点调查:

scala> val s = scala.collection.mutable.Set(1,2)
s: scala.collection.mutable.Set[Int] = Set(1, 2)

scala> s += 4
res0: s.type = Set(1, 2, 4)

scala> s +=
<console>:9: error: missing arguments for method += in trait SetLike;
follow this method with `_' if you want to treat it as a partially applied funct
ion
              s +=
                ^
现在很明显,它是
mutable.SetLike
trait中抽象方法的实现。

谢谢。我忽略了API文档中的“抽象值成员”部分。
abstract def +=(elem: A): SetLike.this.type

Adds a single element to the set.