Printf模块API 详细介绍了类型转换标志,其中:
%B: convert a boolean argument to the string true or false
%b: convert a boolean argument (deprecated; do not use in new programs).
Run Code Online (Sandbox Code Playgroud)
但它没有说明为什么%b被弃用。为什么%B优于%b?
人们会这样正式回答:使用大写字母进行转换,例如%Cand %S(不是%cand %s)以 OCaml 可解析的格式打印内容。%b随后对 to进行了更改%B,因为它将布尔值打印为true和 ,false这也是 OCaml 可解析的。
您可以在这里找到背景故事:http://caml.inria.fr/mantis/view.php ?id=1438 。有一个分支引入了这个,然后改变了二进制文件%B的含义。%b后者破坏了向后兼容性,因此该部分被拒绝。结果,今天我们有两个布尔值%B和的转换%b。