true -> printf

问题描述 投票:0回答:1

下面这段代码不能像我想象的那样工作。

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

分配 truedebug_flagtest_dprintf 似乎没有任何影响。

有人知道原因吗?如果有,你知道有什么办法可以解决吗?

我使用的是OCaml 4.09.0。

谢谢您的回答

ocaml
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.