let a = [1;2;3;]
for i in (a |> Seq.take 10) do Console.WriteLine(i)
for i in (a |> Seq.take 100) do Console.WriteLine(i)
Run Code Online (Sandbox Code Playgroud)
第一行效果很好,但第二行给出错误:输入序列的元素数量不足.
是的,没有100个元素,它们只有3个,但为什么10个作品呢?
毕竟它适用于C#
using System;
using System.Linq;
class P
{ static void Main() {
var p = new[] {1,2,3,4};
foreach(var i in p.Take(10).ToArray()) Console.WriteLine(i);
foreach(var i in p.Take(2).ToArray()) Console.WriteLine(i);
foreach(var i in p.Take(100).ToArray()) Console.WriteLine(i);
}}
Run Code Online (Sandbox Code Playgroud)
其他答案已经解释了你的错误(我建议你不要跳到关于编译器错误的结论,你可能会被低估).此外,您将Seq.take与Enumerable.Take进行比较,但它们没有相同的行为.然而,Seq.truncate 确实有相同的行为Enumerable.Take