Scala中的“++ =”是什么意思

时间:2014-04-02 16:08:30

标签: scala

这是Scala中flatMap的{​​{3}}

def flatMap[B, That](f: A => GenTraversableOnce[B])(implicit bf: CanBuildFrom[Repr, B, That]): That = {
  def builder = bf(repr) // ...
  val b = builder
  for (x <- this) b ++= f(x).seq
  b.result
}

++=在这里意味着什么?

3 个答案:

答案 0 :(得分:8)

++=在Scala中可能意味着两件事:

1:调用++=方法

在使用flatMap的示例中,++=的{​​{1}}方法接受另一个集合,并将其元素添加到构建器中。 Scala集合库中的许多其他可变集合定义了类似的Builder方法。

2:调用++=方法并替换++

的内容

var也可用于调用++=中对象的++方法,并将var的值替换为结果:

var

var l = List(1, 2) l ++= List(3, 4) // l is now List(1, 2, 3, 4) 相当于l ++= List(3, 4)

答案 1 :(得分:2)

请注意,++=是一种方法,而不是Scala语言的一部分。如果它是为特定类定义的,那么它具有类定义它具有的任何含义。在这种情况下,它意味着“将这些添加到最后。”

另请注意,如果某个类定义++但不定义++=,那么编译器将会处理

x ++= y

作为

x = x ++ y

对于以等号结尾的符号(当然不是==!==除外)通常都是如此。这种语法糖允许以一致的方式使用相同数据结构的不可变和可变变体。

答案 2 :(得分:1)

The API of Builder说:

  

将TraversableOnce生成的所有元素添加到此可扩展集合中。