我很困惑
let test = "aString"
let callMe =
printfn test
Run Code Online (Sandbox Code Playgroud)
为什么这不起作用?在编译时抛出以下错误:
类型'string'与'Printf.TextWriterFormat <'a>'类型不兼容
这很好用:
printfn "aString"
Run Code Online (Sandbox Code Playgroud)
svi*_*ick 52
那是因为format参数实际上不是string.它TextWriterFormat<'T>和F#编译器将字符串格式转换为该类型.但它不工作string的变量,因为编译器不能转换string到TextWriterFormat<'T>在运行时.
如果要打印变量的内容,您甚至不应该尝试使用printfn这种方式,因为变量可能包含格式规范.
您可以使用以下%s格式:
printfn "%s" test
Run Code Online (Sandbox Code Playgroud)
或者使用.Net Console.WriteLine():
Console.WriteLine test
Run Code Online (Sandbox Code Playgroud)
open System如果要使用Console该类,请不要忘记在文件顶部添加.