我刚刚发现(令我惊讶)调用以下函数
function foo()
if false
fprintf = 1;
else
% do nothing
end
fprintf('test')
给出和错误Undefined function or variable "fprintf"
。我的结论是变量的范围是在运行前确定的(在我有限的理解计算机语言的解释,特别是 Matlab 的工作原理中)。谁能给我一些这方面的背景信息?
编辑
我上面忘记提到的另一个有趣的事情是
function foo()
if false
fprintf = 1;
else
% do nothing
end
clear('fprintf')
fprintf('test')
产生Reference to a cleared variable fprintf
.