scala - 为什么reduceLeft的类型参数包含下界?

标签 scala scala-collections reduce type-parameter

某些Seq[A]reduceLeft的签名是

def reduceLeft [B >: A] (f: (B, A) => B): B 

A 的类型已知,但下限 >: 告诉我们 B 可以是 A 的任何父类(super class)型.

为什么会这样?为什么不呢

def reduceLeft (f: (A, A) => A): A

我们已经知道序列的头部是类型 A,所以我无法想象 B 可能是不等于 A 的任何东西。您能否提供一个示例,其中 B 是某种父类(super class)型?

最佳答案

假设您的类 B 有一个方法 combine(other:B): B。现在,您对 A 列表调用 reduceLeft((b,a) => b.combine(a))。由于 combine 的返回类型是 B,因此 reduceLeft 的类型参数需要是 B

关于scala - 为什么reduceLeft的类型参数包含下界?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8364763/

相关文章:

scala - 使用新的Scala反射API的“动态”方法调用

java - 在并发编程方面,Scala 比 Java 有什么优势?

Scala-如何获取 Vector 的包含类?

javascript - 测试数组索引是否等于数组值

python - pandas dataframe - 减少初始值

Javascript:为什么数组变量赋值在此函数内外的行为不同?

xml - 为什么 Scala XML 文字对标签之间的空格敏感?

scala - 如何将 Seq 的每个元素与其余元素配对?

Scala集合内存占用特征

scala - Spark : How to run logistic regression using only some features from LabeledPoint?