如何在F#中使用Console.Readline?与Console.Writeline不同的是,当我调用它时,它不会被尊重。
发布于 2009-06-04 18:20:02
如果您使用
let s = Console.ReadLine您只需构建一个指向ReadLine函数的委托。你需要说
let s = Console.ReadLine()来实际执行函数。这就像C#语法,除了类型推断意味着你不会得到编译器警告。
发布于 2009-06-04 06:18:37
你所说的“它不被尊重”是什么意思?这是我刚刚用VS2010b1写的一个小的控制台应用程序,它工作得很好:
open System
let line = Console.ReadLine()
Console.WriteLine("You wrote {0}", line)
// Just to make it pause
let unused = Console.ReadLine()您是否正在尝试在Visual Studio中运行来自F#交互的代码?如果是这样的话,这可能就是问题所在,正如Brian的帖子所解释的那样。
但是,当我从命令行使用F#交互时,我没有看到同样的问题。以下是一次会议的完整文本:
Microsoft F# Interactive, (c) Microsoft Corporation, All Rights Reserved
F# Version 1.9.6.16, compiling for .NET Framework Version v4.0.20506
Please send bug reports to fsbugs@microsoft.com
For help type #help;;
> open System;;
> let line = Console.ReadLine();;
Hello world
val line : string = "Hello world"从F#交互中运行Brian的循环代码并没有显示出同样的问题。
底线:这似乎在Visual Studio中的F#交互中被打破了,但当从命令行交互运行或在完整的控制台应用程序中运行时,这并不是。
发布于 2009-06-04 06:30:52
我手边没有Beta1盒子,但我知道过去我们有一个bug,ReadLine()会看到在交互式UI和运行F#代码的后台进程之间进行通信的后台命令。调查一下是什么可能很有趣
let Foo max =
let rec Loop i =
if i < max then
let line = System.Console.ReadLine()
printfn "line = %s" line
Loop (i+1)
Loop 1
Foo 12当您突出显示它并“发送到交互”时打印。我想您可能会看到一些意想不到的有趣的行,后面是您在窗口中键入的行。
https://stackoverflow.com/questions/948789
复制相似问题