你如何在F#中使用到Console.ReadLine?不像Console.Writeline,它没有被当我把它兑现。
如果您使用
let s = Console.ReadLine
你只建立指向的ReadLine功能的委托。你需要说
let s = Console.ReadLine()
实际执行的功能。这就像C#语法,但类型推断意味着你没有得到一个编译器警告。
你说的“它没有被兑现”呢?下面是我刚刚写在VS2010b1小控制台应用程序,并能正常工作:
open System
let line = Console.ReadLine()
Console.WriteLine("You wrote {0}", line)
// Just to make it pause
let unused = Console.ReadLine()
你们是不是要运行从F#互动Visual Studio中的代码?如果是这样,这可能是问题,因为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 [email protected]
For help type #help;;
> open System;;
> let line = Console.ReadLine();;
Hello world
val line : string = "Hello world"
运行Brian的从F#互动循环的代码,并没有表现出同样的问题。
底线:看起来这是在F#互动打破了Visual Studio中,而不是在命令行或在一个完整的控制台应用程序交互的运行时。
我没有Beta1的盒旁边,但我知道,在过去,我们已经有一个臭虫的ReadLine()将看到交互式用户界面和运行您的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
打印,当您选中它,“发送到互动”。我想可能你会看到一些意想不到的有趣的线,然后键入到窗口线。
//是,如果你不想使用键入的readline的任何回报的正确方法
到Console.ReadLine()|>忽略