2
我使用F#编写自己的LINQ重新实现(感谢Jon Skeet的灵感)。F#:编写空序列而不使用Seq.empty
我用了一招,以产生空序列:
let empty<'b> =
seq {
for n = 0 to -1 do
yield Unchecked.defaultof<'b>
}
printfn "%A" empty<int> // -> seq []
是否有任何惯用的方法来做到这一点?
(Seq.empty
是没有用的,我只是重新实现它)使用序列表情我能想到的是
为什么'Seq.empty'不是有用的,而'seq'构建器是?无论如何,你总是可以使用一个对象表达式来返回IEnumerable <'b>,它返回* empty *'IEnumerator <'b>' – Carsten
也'']:>'seq'或'[||]:>'seq'或者任何类似的东西;) – Carsten
这样做的佳能方式可以看[这里](https://github.com/fsharp/fsharp/blob/master/src/fsharp/FSharp.Core/seq.fs#L20-L59) –