我确信这是有充分理由的,但我没有看到。
Fold
在(说)List
回报
op
在所有元素之间应用折叠运算符的结果和z
foldLeft
它与做同样的事情但具有明确的顺序有明显的关系foldRight
(因此不需要关联运算符)
Fold
Option
退货时
如果非空,则返回应用
f
到 thisscala.Option
的值的结果。scala.Option
否则,计算表达式ifEmpty
。
ifEmpty
是(在)z
列表的位置。 f
是(在的位置)op
对于None
(使用我的心智模型Option
作为可能包含或不包含值的“容器”,是一个“空”容器),一切正常,Option.fold
返回零(的值ifEmpty
)。
Some(x)
不过,for不应该f
采用两个参数,z
因此x
它与 on 序列一致(包括与andfold
具有相似的关系)。foldLeft
foldRight
肯定有一个反对这一点的实用论点 - 在实践中f
只是x
作为参数可能更方便。在大多数情况下,如果它确实也采取z
了,那将被忽略。但一致性也很重要......
那么有人可以向我解释为什么fold
Option 仍然是“正确的”fold
吗?