Printf module API详细说明了类型转换标志,其中包括:
%B: convert a boolean argument to the string true or false
%b: convert a boolean argument (deprecated; do not use in new programs).
但它没有说明为什么%b
被弃用。为什么%B
优于%b
?
答案 0 :(得分:3)
人们会在官方上回答:使用大写字母进行转换,例如// Get the location of the user's browser using the native geolocation service.
navigator.geolocation.getCurrentPosition(
function (position) {
// Check to see if there is already a location. There is a bug in FireFox where this gets invoked more than once with a cached result.
if (locationMarker){
return;
}
和%C
(不是%S
和%c
)以OCaml的可解析格式打印。 %s
更改为%b
之后,因为它将布尔值打印为%B
和true
,这些布尔值也是OCaml可解析的。
你可以在这里找到一个背景故事:http://caml.inria.fr/mantis/view.php?id=1438。有一个分支引入了这个false
然后改变了%B
对二进制文件的含义。后者破坏了向后兼容性,因此该部分被拒绝。结果,今天我们为布尔%b
和%B
进行了两次转换。