首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在visual studio中使用f# interactive读取用户输入?

如何在visual studio中使用f# interactive读取用户输入?
EN

Stack Overflow用户
提问于 2011-11-06 03:01:53
回答 4查看 15K关注 0票数 5

所以我试着做一些简单的事情:

代码语言:javascript
运行
复制
 printfn "Enter a number:"
    try
       let x = System.Console.ReadLine();
       Some(int32(x))
    with
       | :? System.FormatException -> printfn "Invalid number!"
                                      Some(0)

我想打印消息,然后让用户输入一个数字,并尝试将其转换为int并返回它。

如果我只是编译代码(通过在命令行上输入fsc a3.fs ),它就能正常工作。它暂停,等待输入,然后返回一些(Int)。

如果我在命令行上将代码复制并粘贴到FSI中,它会工作得很好。

但当我在visual studio中运行FSI (高亮显示+ alt+enter)中的代码时,它只是直接经过输入部分,然后抛出(并捕获)异常。

下面是我在FSI (在visual studio中)中运行时的输出:

代码语言:javascript
运行
复制
Enter a number:
Invalid number!
0

正如你所看到的,它实际上不会暂停并等待我输入。

有人知道怎么做吗?

谢谢!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-11-06 05:11:18

Visual Studio中的F#交互控制台不支持读取输入,因此无法从控制台请求输入。如果您以交互方式运行代码,则始终可以在编辑器中输入输入,因此最好的解决方法是在运行代码之前输入输入的开头绑定let。您可以使用#if来支持这两种场景:

代码语言:javascript
运行
复制
#if INTERACTIVE
// TODO: Enter input here when running in F# Interactive
let input = "42"
#endif

try 
    #if INTERACTIVE
    Some(int32 input)
    #else
    let x = System.Console.ReadLine(); 
    Some(int32(x)) 
    #endif
with 
    | :? System.FormatException -> 
        printfn "Invalid number!" 
        Some(0) 
票数 8
EN

Stack Overflow用户

发布于 2011-11-06 05:44:43

如果您将F# interactive作为自己的进程打开(通过直接运行fsi.exe,代码就可以正常工作--下面是我的遭遇:

代码语言:javascript
运行
复制
> printfn "Enter a number:"
- let r =
-     try
-        let x = System.Console.ReadLine();
-        Some(int32(x))
-     with
-        | :? System.FormatException -> printfn "Invalid number!"
-                                       Some(0)
- ;;
Enter a number:
5

val r : int32 option = Some 5
票数 1
EN

Stack Overflow用户

发布于 2017-11-27 20:50:07

试试下面,它在我的机器上运行良好(VS 2013,F# 3.1 12.0.21005.1)

代码语言:javascript
运行
复制
let inputTest i = 
    printfn "iter - %d" i
    let input = System.Console.ReadLine()
    printfn "%s" input
    System.Console.ReadLine() |> ignore

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

https://stackoverflow.com/questions/8022512

复制
相关文章

相似问题

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