这是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 }
++=
在这里意味着什么?
答案 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)
将TraversableOnce生成的所有元素添加到此可扩展集合中。