簡體   English   中英

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

[英]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

對於以等號結尾的符號(當然,除了==!== )通常都是如此。 這種語法糖允許以一致的方式使用相同數據結構的不可變和可變變體。

Builder的API說:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM