1.Scala中foldLeft和reduceLeft的区别
高阶 Scala 方法foldLeft 和reduceLeft 都用于聚合集合的项目。但他们表现出不同的行为:
向左折叠:
- FoldLeft 接受一个集合并使用二元运算符从给定的初始值 (z) 开始合并其成员。
- 当它在集合中从左向右移动时,它将二元运算符应用于每个成员和总结果(最初是 z)。
- 所有项目处理完后获得的总值就是结果。
- FoldLeft 产生与原始类型相同的值 (z)。
向左减少:
- FoldLeft 的一个变体称为“reduceLeft”,它使用起始值作为集合的第一个成员。
- 从集合中的第一个成员开始,它使用二元运算符来组合所有项目。
- 它从左到右在集合中移动,就像 FoldLeft 一样,将二元运算符应用于每个元素和总结果。
- 所有项目处理完后获得的总值就是结果。
- reduceLeft 返回的类型与集合元素的类型相同。
总之,foldLeft和reduceLeft都对集合进行left-associative折叠;然而,foldLeft 允许指定起始值(z),而reduceLeft 将初始值设置为集合的第一个成员。
2. 代码及截图
这是一个示例,展示了如何使用foldLeft和reduceLeft:
object Main {
def main(args: Array[String]): Unit = {
val numbers = List(1, 2, 3, 4, 5)
// Using foldLeft to calculate the sum
val sumFold = numbers.foldLeft(0)((acc, num) => acc + num)
println("Sum using foldLeft: " + sumFold) // Output: 15
// Using reduceLeft to calculate the sum
val sumReduce = numbers.reduceLeft((acc, num) => acc + num)
println("Sum using reduceLeft: " + sumReduce) // Output: 15
}
}
输出截图:
相关用法
- Scala float.Abs用法及代码示例
- Scala float.ToDouble用法及代码示例
- Scala float.<用法及代码示例
- Scala float.>用法及代码示例
- Scala float.Max用法及代码示例
- Scala float.<=用法及代码示例
- Scala float.>=用法及代码示例
- Scala float.Negate用法及代码示例
- Scala float.+用法及代码示例
- Scala float.*用法及代码示例
- Scala float.-用法及代码示例
- Scala float./用法及代码示例
- Scala float.Min用法及代码示例
- Scala float.ToLong用法及代码示例
- Scala float.%用法及代码示例
- Scala float.ToInt用法及代码示例
- Scala BitSet DropRight()用法及代码示例
- Scala BitSet DropWhile()用法及代码示例
- Scala String lastIndexof()用法及代码示例
- Scala String split()用法及代码示例
- Scala String startsWith()用法及代码示例
- Scala Float toInt()用法及代码示例
- Scala TreeSet product()用法及代码示例
- Scala Char getClass()用法及代码示例
- Scala Char isDigit()用法及代码示例
注:本文由纯净天空筛选整理自21211a4uyj大神的英文原创作品 Difference between foldLeft and reduceLeft in Scala。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。