Seq.take
不被视为F中序列的终端操作。正如注释中所提到的,序列被延迟地评估,只有被认为是“终端”的操作才会导致序列被迭代。终端操作包括
Seq.iter
(如果要对每个元素执行操作)和
Seq.toList
(如果您想要每个元素的具体化列表),以及
Seq.exactlyOne
.
在F Interactive中,您可能只需评估
it
以查看前几个值。在下面的示例中,镜像您的,评估
它
最后将显示所取的3个值:
open System
let getTheData() =
seq {
for n in {0..1000} -> Guid.NewGuid(), n
} |> Map.ofSeq
getTheData()
|> Seq.take 3;;
it;;
val it : seq<Collections.Generic.KeyValuePair<Guid,int>> =
seq
[[001830fe-9ce3-4649-8609-571e4aedb4c7, 791]
{Key = 001830fe-9ce3-4649-8609-571e4aedb4c7;
Value = 791;};
[001bf0a9-5981-4bc0-bcaf-046af7f4866a, 383]
{Key = 001bf0a9-5981-4bc0-bcaf-046af7f4866a;
Value = 383;};
[004b44a7-85d2-4ce5-91bf-49bcc44f03ba, 91]
{Key = 004b44a7-85d2-4ce5-91bf-49bcc44f03ba;
Value = 91;}]