String F#printf字符串

String F#printf字符串,string,f#,printf,String,F#,Printf,我很困惑 let test = "aString" let callMe = printfn test 为什么这不起作用?编译时抛出以下错误: 类型“string”与类型“Printf.textWritePerformat不兼容,这是因为格式参数实际上不是字符串。它是运行时的textWritePerformat 如果要打印变量的内容,甚至不应该尝试以这种方式使用printfn,因为变量可能包含格式规范 您可以使用%s格式: printfn "%s" test 或者使用.Net控制台

我很困惑

let test = "aString"

let callMe =
    printfn test
为什么这不起作用?编译时抛出以下错误:


类型“string”与类型“Printf.textWritePerformat不兼容,这是因为
格式
参数实际上不是
字符串
。它是运行时的
textWritePerformat

如果要打印变量的内容,甚至不应该尝试以这种方式使用
printfn
,因为变量可能包含格式规范

您可以使用
%s
格式:

printfn "%s" test
或者使用.Net
控制台.WriteLine()

如果要使用
控制台
类,请不要忘记在文件顶部添加
开放系统

根据上面所说的,您也可以尝试以下操作:

let test = "aString"
let callMe = printfn (Printf.TextWriterFormat<_> test)
callMe
let test=“aString”
让callMe=printfn(Printf.textWritePerformat测试)
callMe

我想补充一点,在F#code中使用
Console.WriteLine
不是惯用的,而且
printf
版本更为常见。如果编译器将其转换,我想是有意义的。以printfn“%s”测试结束您还可以进行
stdout.WriteLine测试
,我想唯一的优点是它缩短了一个字符,并且您不需要打开
系统
,这让我想知道为什么不只是一个不进行格式化的打印函数。我想这很容易定义。让打印值=printfn“%s”值nope;值限制。
Console.WriteLine test
let test = "aString"
let callMe = printfn (Printf.TextWriterFormat<_> test)
callMe