[英]What does “++=” mean in Scala
這是Scala中flatMap
的實現
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 }
++=
意味着什么?
++=
可以表示Scala中的兩個不同的東西:
1:調用++=
方法
在使用flatMap
的示例中, Builder
的++=
方法采用另一個集合並將其元素添加到構建器中。 Scala集合庫中的許多其他可變集合定義了類似的++=
方法。
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)
等價於l = l ++ List(3, 4)
。
請注意, ++=
是一種方法,而不是Scala語言的一部分。 如果它是為特定類定義的,那么它具有類定義它具有的任何含義。 在這種情況下,它意味着“將這些添加到最后”。
還要注意,如果一個類定義++
但不定義++=
那么編譯器將會處理
x ++= y
如
x = x ++ y
對於以等號結尾的符號(當然,除了==
, !=
和=
)通常都是如此。 這種語法糖允許以一致的方式使用相同數據結構的不可變和可變變體。
將TraversableOnce生成的所有元素添加到此可擴展的集合中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.