F#中printfn函数的返回类型究竟是什么?
f#
我在这里查找了 printfn 的文档,它是这样说的:
printfn 格式
使用给定格式打印到标准输出,并添加换行符。
format : TextWriterFormat<'T> 格式化程序。
返回: 'T 格式化结果。
但是如果我在 FSI 中输入以下内容
> let v = printfn "Hello";;
Hello
val v : unit = ()
它指出v( printfn 的返回值)的类型为unit。
这似乎不一致,但我想我在这里遗漏了一些东西,所以有人可以帮我吗?
回答
这并不矛盾。在您的示例中,格式为 type TextWriterFormat<unit>,因此最终返回类型为unit,因为'T是unit。
如果你已经写了let v = printfn "Hello %s",那么类型v就会是string -> unit。这就是 F# 提供类型安全字符串格式的方式。