如何在 F# 的函数中使用用户输入的值

Mar*_*ram 5 f# user-input factorial

我正在尝试在 F# 中创建一个简单的阶乘函数,它使用用户输入的值(使用控制台,我不知道这是否有任何区别),但我似乎找不到任何解决方案在我的函数中使用用户的值。

    open System

    let rec fact x =
        if x < 1 then 1
        else x * fact (x - 1)

    let input = Console.ReadLine()
    Console.WriteLine(fact input)
Run Code Online (Sandbox Code Playgroud)

它不断地给我错误消息“这个表达式的类型应该是“int”,但这里的类型是“string””。如果有人知道如何使其正常工作(或者至少可以告诉我需要做什么才能将用户输入的值转换为 INT,那将不胜感激。

Gus*_*Gus 3

F# 不会为您自动转换,因此您需要解析字符串:

open System

let rec fact x =
    if x < 1 then 1
    else x * fact (x - 1)

let input = Console.ReadLine()
Console.WriteLine(fact (Int32.Parse input))
Run Code Online (Sandbox Code Playgroud)

理论上,您需要转换回字符串才能打印它,但它是有效的,因为 Console.WriteLine 有一个重载,它接受一个整数并进行转换。