【发布时间】:2013-08-01 04:55:15
【问题描述】:
假设我有 some_fun 可以做一些复杂的工作。
function foo = some_complicated_fun(x,y,z,verbosity)
我已经在这段代码中写了很多调试打印,但是如果它正常工作,普通用户可能对查看所有这些内容不感兴趣。 无论如何都会打印错误语句(没有足够的参数等)。
我目前编写函数的方法是:
function foo = some_complicated_fun(x,y,z,verbosity)
(x,y,z,verbosity) = parse_args(x,y,z,verbosity); % parse args, check nargin, etc
for i=1:5,
% whatever
% do some work with x,y,z
% blah blah
if verbosity
fprintf('Now on iteration %i\n',i); % basic print
end
% or, with mutiple levels:
if verbosity == 1;
fprintf('Now on iteration %i\n',i); % basic print
end
if verbosity == 2;
fprintf('x = %f,y = %f,z=%f %i\n',x,y,z); % more information
end
% do more work
end
我不喜欢使用 if 语句来做这件事,因为它会使代码变得混乱,但我想不出任何其他方式。 一个班轮更好或更差:
if verbosity; fprintf('Iteration %i\n',i); end
更好是因为它更小,更糟糕是因为单行代码比 3 行代码的可读性差。
我想要的是一些简单、更优雅的方式来控制冗长。
存在吗?
【问题讨论】:
标签: matlab printf verbosity clarity