如何将输入的结果转换为F#中的int?

Dan*_*y_P 3 f#

我正在学习f#并做一个要求用户输入数字的功能.然后,该功能将显示用户输入,如果是正数或负数.但是,当我尝试运行程序时,它会出错,并声明输入是字符串而不是int.我不知道将函数输出转换为字符串的方法.

    open System

let sign num  =
   if num > 0 then "positive"
   elif num < 0 then "negative"
   else "zero"

let main() =
   Console.Write("please enter a number:")
   let input = Console.ReadLine()
   Console.Write("The number {0}", sign 1)
   System.Console.ReadKey() |> ignore


main()
Run Code Online (Sandbox Code Playgroud)

Pan*_*vos 6

使用.这将解析输入并返回一个int或抛出一个System.FormatException.(int)input int input

另一种选择是使用Int32的TryParse方法并将结果和成功指示符作为元组返回.您也可以在同一行中解构元组:

let (ok,number)= System.Int32.TryParse input
let message=if ok then 
                sprintf "The number %i" i 
            else
                sprintf "%s is not a number" input
Console.WriteLine message
Run Code Online (Sandbox Code Playgroud)

  • 正如古斯塔沃指出的那样,`(int)input`看起来像一个演员误导 - 你应该使用`int input`代替,这很明显`int`只是一个被应用的函数. (4认同)