Rus*_*Cam 11 f# f#-interactive
免责声明: 总 F#新手问题!
如果我在Visual Studio中的F#文件中键入以下内容
#light
let squares =
seq { for x in 1 .. 10 -> x * x }
printf "%A" squares
Run Code Online (Sandbox Code Playgroud)
并通过突出显示并按Alt+ 运行F#interactive,Enter交互式窗口中的输出为
>
seq [1; 4; 9; 16; ...]
val squares : seq<int>
>
Run Code Online (Sandbox Code Playgroud)
但我希望看到完整的序列即
>
seq [1; 4; 9; 16; 25; 36; 49; 64; 81; 100]
val squares : seq<int>
>
Run Code Online (Sandbox Code Playgroud)
这可能吗?我希望有一个我错过的环境.
Bri*_*ian 11
'seq'是一个懒惰评估的结构; 它可能是无限的,这就是为什么FSI只显示前几个值.如果你想看到这一切,一件容易的事就是转换成一个列表,例如
printf "%A" (squares |> Seq.tolist)
Run Code Online (Sandbox Code Playgroud)
Ben*_*jol 10
如果要显示序列中的所有值而不转换为List,则可以直接迭代序列,如下所示:
Seq.iter (printfn "%A") squares
Run Code Online (Sandbox Code Playgroud)
请注意,你冒了风险:如果像Brian暗示的那样,序列是无限的,你可能需要等待相当长的时间.(在这种情况下,Seq.skip
并且Seq.take
是你的朋友)
归档时间: |
|
查看次数: |
3514 次 |
最近记录: |