matlabには2つの関数があり、大まかに次のようになります。
function f1()
setup_callback(@f2);
a = 1;
evaluate_callback();
end
function f2()
...
end
ここで、evaluate_callbackは、f2を呼び出す外部ライブラリ関数です。
f2の内側からaの現在の値を読み取れるようにしたい。グローバルを使用せずにこれを達成する方法はありますか?
matlabには2つの関数があり、大まかに次のようになります。
function f1()
setup_callback(@f2);
a = 1;
evaluate_callback();
end
function f2()
...
end
ここで、evaluate_callbackは、f2を呼び出す外部ライブラリ関数です。
f2の内側からaの現在の値を読み取れるようにしたい。グローバルを使用せずにこれを達成する方法はありますか?
内部f2
に入れ子関数を作成しますf1
:
function f1()
setup_callback(@f2);
a = 1;
evaluate_callback();
function f2()
%# you can access a here
disp(a)
end
end
入れ子関数は、必要なスコープを提供します。f1の内部から、または関数ハンドルを介する以外に、f2コールバック関数を呼び出す方法はないことに注意してください。したがって、f1は@f2
ハンドルを返すことができ、グローバルスコープの他の関数はそれをそのように呼び出すことができます。
function f1()
setup_callback(@f2);
a = 1;
evaluate_callback();
function f2()
% refer to a
...
end
end