搜索了很多之后,我找不到F#等效的Enumerable.DefaultIfEmpty

F#中是否存在类似的东西(也许以不同的惯用方式)?

最佳答案

Seq模块函数操作并返回IEnumerable<_>DefaultIfEmpty操作并返回IEnumerable<_>。仅将其包装在可组合的函数中怎么样。

let inline DefaultIfEmpty d l = System.Linq.Enumerable.DefaultIfEmpty(l, d)

这也保留了惰性。

例子:
Seq.empty |> DefaultIfEmpty 0

更新

我已经制作了一个开源库,其中包含许多扩展和静态方法,包括Enumerable.defaultIfEmpty-ComposableExtesions

08-28 21:40