由于Matlab被解释,通常会在执行函数签名的函数开头花费大量时间.例如
if nargin ~= 2; error('must provide two input args a and b'); end
if a < 0||a ~=floor(a); error('input arg1 must be positive non-zero integer'); end
if ~isa(b,'cell') ...
Run Code Online (Sandbox Code Playgroud)
相反,使用Matlab的assert()会更好吗?如果没有,何时适合在Matlab中使用assert()?
有对在生产中使用代码断言的大讨论在这里,但我不能肯定这适用于解释的代码.同样,这里有另一个很好的讨论,我同意@Dan Dyer关于断言表达对当前状态的看法.然而,在这里看一下类似的Python讨论人们说,只使用断言来应对永远不会发生的情况(例如异常情况的异常),这与之前的引用有点矛盾.
也许这更像是一个关于断言在解释语言中扮演的角色的问题,而不是关于Matlab的问题.