搜索了很多之后,我找不到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