MATLAB:嵌套函数的函数句柄

标签 matlab function-handle

有没有办法为嵌套函数创建函数句柄,并将父函数包含在函数句柄中?

举个例子,假设我有:

function myP = myParent()

    myP.My_Method = myMethod;

    function myMethod()
        disp "hello world"
    end
end

在另一个文件中,我可以通过执行以下操作来调用该方法:

myP = myParent();
myP.My_Method();

但是,如果我有另一个函数将函数句柄作为参数然后调用该函数,那么在这种情况下我如何将函数句柄传递给 myMethod ,因为这个新函数可以'创建一个 myParent 变量。

最佳答案

以下似乎有效:

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 (在父级中拉入的变量):

When you create a function handle for a nested function, that handle stores not only the name of the function, but also the values of externally scoped variables.

关于MATLAB:嵌套函数的函数句柄,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21299446/

相关文章:

python - 将数据库中的所有图像重新采样为相同的体素大小

database - 从 mat 文件中读取数据而不是从数据库中读取数据的好处

matlab中没有释放内存?

matlabFunction 删除输入参数

matlab - matlab中匿名函数的问题

image - Matlab - 缩放图像的颜色条

python - 绘制给定两个端点的半圆形路径(3D)

matlab - 如何访问元胞数组中的函数句柄?

matlab - 在Matlab中不定义符号变量的匿名函数的导数

matlab - 将函数句柄的单元格数组转换为函数句柄的单个数组