私は(驚いたことに)次の関数を呼び出すことを発見しました
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
ます。