我想在类的构造函数中获取输入参数名称,如下所示:
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
?如果在构造函数中无法实现,是否有其他方法可以实现此目的?
提前致谢!
我认为对于这种情况,您不关心用作输入参数的变量的 name (在本例中该变量不存在,因为您的输入参数只是一个表达式
@hello_world
而不是变量)。
func2str
:
this.Name = ['@', func2str(callback)];
JFTR,
inputname
适用于这样的情况:
myCallback = @hello_world;
task = Task(myCallback); % here, inputname returns 'myCallback'
一般来说,除了您尝试实现对象显示的情况之外,
inputname
并不是一个非常有用的函数。 (虽然现在有更好的方法)