所以我有一个从超类继承的类,handle
如下所示:
classdef testClass < handle
properties(Access = private)
handles_gui;
end
methods(Access = public)
function obj = testClass
% Preferably like to get inputname here
obj.handles_gui = obj.init_gui();
end
function callback_test(obj,hObject,eventdata)
disp(inputname(1));
end
end
methods(Access = private)
function handles_gui = init_gui(obj)
handles_gui.figure = figure( ...
'Tag', 'figure', ...
'Units', 'characters', ...
'Position', [50 35 167 25]);
handles_gui.button_left = uicontrol( ...
'Parent', handles_gui.figure, ...
'Units', 'characters', ...
'Position', [41 1.2 8 1.8], ...
'String', 'Test', ...
'Callback', @(hObject,eventdata) callback_test(obj,hObject,eventdata));
end
end
end
我想最好在构造函数中获取对象的工作区名称。不确定这是否可行,因为在创建对象之前我不确定是否分配了名称。如果是这样的话,那么我想通过回调来获取它。我有一个 gui,但为了正确传递obj
句柄,我必须通过传入函数obj
来定义回调。init_gui
这意味着当按下按钮时inputname
调用when ,它返回,因为它是在回调定义中定义的。但是,如果我通过终端调用,它会返回正确的变量名(结果是有意义的,但这不是我想要的)。一个例子如下所示:callback_test
'obj'
callback_test
EDU>> test = testClass;
obj (this was called by clicking on the button)
EDU>> test.callback_test
test
EDU>>
所以我的问题是:如何获取变量名,最好在构造函数中,如果没有,那么如何通过回调获取它,而不必使用终端。