关于其他语言有很多相关的问题,但这是关于MATLAB的。
(如何)我可以从匿名函数访问调用者的范围?我曾考虑使用eval
,但这比使用变量更糟糕。一个例子:
clearvars;
f1 = @() n
f2 = @() eval('n')
n = 1
f3 = @() n
f4 = @() eval('n')
n = 2
f3()
会运行,但输出1
,而我希望2
。我首选的解决方案是f2()
,但所有f1()
,f2()
,f4()
都会失败,并显示几乎相同的错误消息:
(Error using eval)
Undefined function or variable 'n'.
有趣的是,f4()
甚至无法访问原始范围,可能是因为eval
隐藏了n
的使用,因此n
并未与f4
一起存储记忆的原因。
那么我该怎么做才能从n
访问f2
?
答案 0 :(得分:2)