首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么Console.Readline不起作用而Console.Readline()起作用呢?

为什么Console.Readline不起作用而Console.Readline()起作用呢?
EN

Stack Overflow用户
提问于 2009-06-04 05:59:38
回答 4查看 16.8K关注 0票数 11

如何在F#中使用Console.Readline?与Console.Writeline不同的是,当我调用它时,它不会被尊重。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-06-04 18:20:02

如果您使用

代码语言:javascript
复制
let s = Console.ReadLine

您只需构建一个指向ReadLine函数的委托。你需要说

代码语言:javascript
复制
let s = Console.ReadLine()

来实际执行函数。这就像C#语法,除了类型推断意味着你不会得到编译器警告。

票数 31
EN

Stack Overflow用户

发布于 2009-06-04 06:18:37

你所说的“它不被尊重”是什么意思?这是我刚刚用VS2010b1写的一个小的控制台应用程序,它工作得很好:

代码语言:javascript
复制
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#交互时,我没有看到同样的问题。以下是一次会议的完整文本:

代码语言:javascript
复制
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#交互中被打破了,但当从命令行交互运行或在完整的控制台应用程序中运行时,这并不是。

票数 9
EN

Stack Overflow用户

发布于 2009-06-04 06:30:52

我手边没有Beta1盒子,但我知道过去我们有一个bug,ReadLine()会看到在交互式UI和运行F#代码的后台进程之间进行通信的后台命令。调查一下是什么可能很有趣

代码语言:javascript
复制
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

当您突出显示它并“发送到交互”时打印。我想您可能会看到一些意想不到的有趣的行,后面是您在窗口中键入的行。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/948789

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档