如果你真的想要,你不应该这样做,你可以把variable2etc 变成函数,并evalin用来获取当前值variable1:
variable2 = @() 2 * evalin('caller', 'variable1')
variable1 = 1;
variable2() % output: 2
variable1 = 15;
variable2() % output: 30
这是一个相当丑陋的解决方案,我自己不会使用它。如果您的代码在函数中,则有一个更好的解决方案(从某种意义上说,它不使用 eval):
function [ ... ] = myFun( ... )
variable1 = 1;
variable2() % output: 2
variable1 = 15;
variable2() % output: 30
function v2 = variable2; v2 = 2 * variable1; end
end
尽管如此,我个人还是会使用类似于 Robert P 的update_vars脚本的东西。同样,如果您在一个函数中,您可以使用嵌套函数可以访问和修改其父级中的所有变量的事实:
function [ ... ] = myFun( ... )
variable1 = 1;
updateVars();
variable2 % 2
variable1 = 15;
updateVars();
variable2 % 30
function updateVars
variable2 = 2 * variable1;
end
end