为什么使用多个参数列表定义折叠?

问题描述 投票:1回答:1

我想弄清楚在Scala中使用括号的韵律或原因,特别是使用fold方法:

val sum = prices.fold(0.0)(_ + _)

为什么会这样? Scala似乎通常不遵循FP格式(方法调用上没有括号),但是它确实……除了它还需要在单项累加器中加上括号之外?为什么也不是

val sum = prices.fold((0.0), (_ + _))

val sum = prices.fold 0.0 (_ + _)

scala fold
1个回答
1
投票

IterableOnce.fold是使用多个参数列表定义的,可能是由于JörgW Mittag建议的类型推断原因

IterableOnce.fold

另一方面,例如,def fold[A1 >: A](z: A1)(op: (A1, A1) => A1): A1 使用单个参数列表定义

Either.fold

确认类型推断的原因,请考虑以下示例

Either.fold

注意,当不使用多个参数列表时,我们必须如何显式地将类型参数指定为def fold[C](fa: A => C, fb: B => C): C

© www.soinside.com 2019 - 2024. All rights reserved.