有没有办法为包含函数句柄中的父函数的嵌套函数创建函数句柄?
举个例子,说我有:
function myP = myParent()
myP.My_Method = myMethod;
function myMethod()
disp "hello world"
end
end
在另一个文件中,我可以通过执行以下操作来调用该方法:
myP = myParent();
myP.My_Method();
但是,如果我有另一个函数将函数句柄作为参数然后调用该函数,在这种情况下如何将函数句柄传递给myMethod
,因为这个新函数不能创建一个myParent
变量。
答案 0 :(得分:3)
以下似乎有效:
function myP = myParent()
myP.My_Method = @myMethod;
function myMethod()
s=dbstack;
fprintf('Hello from %s!\n',s(1).name);
end
end
按如下方式运行:
>> myP = myParent()
myP =
My_Method: @myParent/myMethod
>> feval(myP.My_Method)
Hello from myParent/myMethod!
>> myP.My_Method()
Hello from myParent/myMethod!
从另一个函数运行它也很好:
% newfun.m
function newfun(hfun)
feval(hfun)
测试:
>> newfun(myP.My_Method)
Hello from myParent/myMethod!
根据您的工作情况,这应该足够了。请注意,您创建的每个句柄都是唯一的,因为it contains information about externally scoped variables(父项中提取的变量):
为嵌套函数创建函数句柄时,该句柄不仅存储函数的名称,还存储外部作用域变量的值。