我知道这个问题可能很愚蠢。
我刚刚发现自己很难理解fold
link中的Scala Option
定义。
有人可以帮助我理解定义部分吗? final def fold[B](ifEmpty: => B)(f: (A) => B): B
(ifEmpty: => B)
是什么意思,这里的ifEmpty
代表一个函数吗?正确的部分=> B
代表什么?它代表没有任何参数的功能吗?应该是() => B
吗?
答案 0 :(得分:2)
关于
的定义有很多事情要做<div>
<div>
<section>
<figure>
<a href="#text1" class="pin">1</i>
<a href="#text2" class="pin">2</i>
<a href="#text3" class="pin">3</i>
<a href="#text4" class="pin">4</i>
</figure>
</section>
</div>
<div class="text" id="text1">
<h3>Text item 1</h3>
</div>
<div class="text" id="text2">
<h3>Text item 2</h3>
</div>
<div class="text" id="text3">
<h3>Text item 3</h3>
</div>
<div class="text" id="text4">
<h3>Text item 4</h3>
</div>
</div>
我们有
final def fold[B](ifEmpty: => B)(f: (A) => B): B
。这确实与ifEmpty: => B
类似,并且意味着() => B
直到在方法体内使用(如果曾经使用过)时才进行评估。ifEmpty
,其中helps type inference是因为Scala类型推断适用于每个列表。这意味着我们不必在调用站点上显式提供(ifEmpty: => B)(f: (A) => B)
类型的参数。[B]
和A
使方法多态B
防止方法被覆盖final
是一种高阶方法,因为它接受函数类型为fold
的参数