F# 错误 FS0039:未定义值或构造函数 'input'

F# error FS0039: The value or constructor 'input' is not defined

let getName name:string = 
    printfn  "the name is %s" name

我试图做的就是让代码显示一个字符串,但是当我输入例如“julian”时,我得到了 FS0039 错误,但是当我将它更改为 (name:int) 并输入一个数字时,它完美地工作很好

我认为您缺少 name:string 周围的括号,否则 : string 会被解析为整个函数的 return 值,并且如果您的函数只是执行副作用与打印一样,return 值为 unit

let getName name:string = 表示 getName 是一个函数 returning a string 并采用参数 name 和要推断的类型 - 它的临时签名是 (name: 'a) -> string。误导的是空格:并不是因为这里 name:string 没有空格,所以 :string 指的是参数 name 而不是函数 getName.

基于其 body printfn "the name is %s" name :

  • 函数应该returnunit
  • 参数 name 的类型为 string(请参阅 %s 占位符)

所以,您可以:

  • 要么加括号let getName (name: string) = ...
  • 或(更好)删除类型注释 let getName name = 以依赖因 %s.
  • 而在此处起作用的类型推断

最后一点:您的函数称为“get something”,但实际上 return 什么都没有。它不一致,使它更难使用和维护。 greetprintprintName之类的比较合适。