下面这段代码不能像我想象的那样工作。
let debug_flag = ref false
let dprintf = let open Printf in
match !debug_flag with
| true -> printf
| false -> ifprintf stdout
let test_dprintf () =
begin
debug_flag := true;
Printf.printf "print1\n";
dprintf "print2\n";
Printf.printf "print3\n";
debug_flag := false
end
我希望它能输出
print1
print2
print3
但它只打印
print1
print3
分配 true
到 debug_flag
在 test_dprintf
似乎没有任何影响。
有人知道原因吗?如果有,你知道有什么办法可以解决吗?
我使用的是OCaml 4.09.0。
谢谢您的回答