题
免责声明: 总的F#新手问题
如果我键入以下成在Visual Studio一个F#文件
#light
let squares =
seq { for x in 1 .. 10 -> x * x }
printf "%A" squares
和运行F#它互动通过高亮显示,然后按替代 + 输入,在交互窗口中的输出是
>
seq [1; 4; 9; 16; ...]
val squares : seq<int>
>
但我想看到完整的序列即。
>
seq [1; 4; 9; 16; 25; 36; 49; 64; 81; 100]
val squares : seq<int>
>
这是可能的?我希望有这个,我已经错过了设置。
解决方案
“SEQ”是惰性计算构建体;它可以是无限的,这就是为什么FSI只显示前几个值。如果你想看到这一切,一件容易的事情做的是转换到一个列表,e.g。
printf "%A" (squares |> Seq.tolist)
其他提示
如果你想不转化成列表以显示序列中的所有的值,可以在像这样的序列直接迭代:
Seq.iter (printfn "%A") squares
请注意,你承担了风险:如果像布赖恩提示,该序列是无限的,你可以为一个相当漫长的等待是英寸(在这种情况下,Seq.skip
和Seq.take
是你的朋友)
另一种方法是fsi.PrintLength
设定为适当大量,e.g。
> fsi.PrintLength <- 500
不隶属于 StackOverflow