我在matlab中有两个函数,大致看起来像这样
function f1()
setup_callback(@f2);
a = 1;
evaluate_callback();
end
function f2()
...
end
其中evaluate_callback是一个调用f2的外部库函数。
我希望能够从f2中读取a的当前值。有没有办法在不使用全局变量的情况下实现这一目标?
答案 0 :(得分:9)
在f2
内设置f1
嵌套函数:
function f1()
setup_callback(@f2);
a = 1;
evaluate_callback();
function f2()
%# you can access a here
disp(a)
end
end
答案 1 :(得分:2)
嵌套函数将提供您想要的范围。请注意,除了来自f1内部或通过函数句柄之外,没有其他方法可以调用f2回调函数。所以f1可以返回@f2
句柄,而全局范围内的其他函数可以这样调用它。
function f1()
setup_callback(@f2);
a = 1;
evaluate_callback();
function f2()
% refer to a
...
end
end