如何在Matlab构造函数中获取参数名称

问题描述 投票:0回答:1

我想在类的构造函数中获取输入参数名称,如下所示:

classdef Task

    properties
        Name string
    end

    methods
        function this = Task(callback)
            arguments
                callback {isFunctionCallSignal}
            end

            this.Name = inputname(1);
        end
    end

end

我这样使用:

task = Task(@hello_world)

其中

@hello_world
是对现有函数的函数调用信号。

如何在实例化时使

task.Name
变为
@hello_world
?如果在构造函数中无法实现,是否有其他方法可以实现此目的?

提前致谢!

matlab oop
1个回答
0
投票

我认为对于这种情况,您不关心用作输入参数的变量的 name (在本例中该变量不存在,因为您的输入参数只是一个表达式

@hello_world
而不是变量)。

我想你想要的是

func2str
:

this.Name = ['@', func2str(callback)];

JFTR,

inputname
适用于这样的情况:

myCallback = @hello_world;
task = Task(myCallback); % here, inputname returns 'myCallback'

一般来说,除了您尝试实现对象显示的情况之外,

inputname
并不是一个非常有用的函数。 (虽然现在有更好的方法

© www.soinside.com 2019 - 2024. All rights reserved.