0

我知道这个问题可能很愚蠢。

我只是发现自己很难理解linkfold的定义。Scala Option

谁能帮我理解定义部分?final def fold[B](ifEmpty: => B)(f: (A) => B): B

什么(ifEmpty: => B)意思,ifEmpty这里代表一个功能吗?右边的部分=> B代表什么?它代表一个没有任何参数的函数吗?应该是这样() => B吗?

4

1 回答 1

2

在定义方面有很多事情要做

final def fold[B](ifEmpty: => B)(f: (A) => B): B

我们有

  • 按名称参数ifEmpty: => B。这确实类似于() => B并且ifEmpty在方法主体内使用(如果有的话)之前不会评估手段。
  • 多个参数列表(ifEmpty: => B)(f: (A) => B)有助于类型推断,因为 Scala 类型推断适用于每个列表。这意味着我们不必[B]在调用站点显式提供类型参数。
  • 输入参数A并使B方法具有多态性
  • final防止方法被覆盖
  • fold是一种高阶方法,因为它接受函数类型的参数(A) => B
于 2020-04-20T22:37:53.960 回答