繁体   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