我正在阅读“试用F#”教程,并决定在安装必要的F#插件后,我想尝试在编辑器中将代码写入Visual Studio。
代码是:
let toHackerTalk (phrase:string) =
phrase.Replace("t", "7").Replace("o", "0")
let name:string = "tom"
printf "%s",toHackerTalk name
代码在在线编辑器上运行,但是当我尝试在Visual Studio上运行时,它只是闪烁命令提示符,要求我按一个键继续。我意识到这一定是一个非常基本的问题,我只是看不出问题是什么,因为它在在线编辑器中运行得很好。
答案 0 :(得分:4)
答案 1 :(得分:3)
你应该这样做:
printf "%s" (toHackerTalk name)
请参阅演示:https://dotnetfiddle.net/Ft9O4z
因为使用F#你不需要用逗号分隔函数参数,逗号用于元组:
let d = printf "%s",toHackerTalk name
printfn "%A" d // (<fun:d@6>, "70m")
您正在创建一个包含两个值( (printf "%s"), (toHackerTalk name) )
的元组:
printf "%s" // a function string -> unit
"70m" // a string
你没有得到错误,因为你正在创建一个被忽略的元组(也许你会收到警告要求忽略值)
你做不到
printf "%s" toHackerTalk name
因为这意味着调用printf with 3 args:
"%s"
一个字符串toHackerTalk
函数字符串 - &gt;单元name
一个字符串和printf "%s"
只需要1个字符串arg
所以你需要做
printf "%s" (toHackerTalk name)
执行toHackerTalk name
并将结果作为参数传递
与
相同let temp = toHackerTalk name // or (toHackerTalk name) parens are optional
printf "%s" temp