在 F# 中可以使用 %A 创建一个速记函数来打印吗

Ada*_*m B 2 f# f#-interactive visual-studio-code

我刚刚开始第一次使用 F#,使用 VSCode 和交互式笔记本。我对不得不不断地写出来感到非常恼火

printfn "%A" something
Run Code Online (Sandbox Code Playgroud)

因为它杀死了我的内心。

在每个文件的开头简单地写:

let print(something) = printfn "%A" something

// then use with

print(4 + 3) // int
print(3.7 + 1.1) //float
print("this is so much better") // text
Run Code Online (Sandbox Code Playgroud)

为什么这个不内置?

Abe*_*bel 5

事实证明,将其内置起来并非易事。不是因为它\xe2\x80\x99s是一个技术挑战,而是因为\xe2\x80\x99s没有一个答案\xe2\x80\x9chow来打印X\xe2\x80\x9d,当类型是通用的时。是否应该使用国际化?它应该像这样工作吗ToString?它的行为是否应该像%A那样缓慢并且在 F# 版本之间发生了变化?

\n

一个实现被完成,然后被停止,正是因为我们对这些问题没有明确的答案。我有自己的观点和偏好,但我的偏好可能不是你的。这就是为什么这不像我们希望的那样微不足道。

\n

也就是说,像您写的那样有一个小辅助函数是很常见的。%O也许你\xe2\x80\x99d用(需要行为)制作另一个ToString()。我还经常为日志记录专门制作一个,其行为类似于printfn,但将其记录在某处。

\n

内插字符串的存在使得对此类助手的要求不那么苛刻。但可以肯定的是,仅转储类型内容的函数仍然很常见。

\n