在 C++ 中我会写
bool positive (int a)
{
#ifdef DEBUG
cout << "Checking the number " << a << "\n";
#endif
return a > 0;
}
在 OCaml 中我可以写
let positive x =
begin
printf "Checking the number %d\n" x;
x > 0
end
但是,如何在不处于调试模式时禁用 printf 语句呢?
无需预处理,您可以简单地将全局标志定义为let debug = true
和写:
if debug then
printf ...;
如果出现以下情况,此代码将被 ocamlopt 删除debug
是假的。也就是说,它很麻烦,并且应该仅在生产代码的性能至关重要的情况下使用。
另一个优化程度较低的选项是使用可变标志。这更方便,因为您不必重建程序来激活或停用调试日志记录。您可以使用命令行选项来控制它(请参阅文档Arg
模块)。
let debug = ref false
...
if !debug (* i.e. debug's value is true *) then
printf ...;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)