獲得一個處理對象的基礎的工作空間的名稱,以便我有一個類從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
句柄,我必須通過在init_gui
函數中傳遞obj
來定義回調。這意味着當按下按鈕時被調用callback_test
時,它將返回'obj'
,因爲它在回調定義中定義。但是,如果我通過終端呼叫callback_test
,它會返回適當的變量名稱(結果合理,但這不是我想要的)。一個例子如下所示:
EDU>> test = testClass;
obj (this was called by clicking on the button)
EDU>> test.callback_test
test
EDU>>
所以我的問題是:如何能夠獲得變量名,優選在構造,並且如果沒有,那麼我怎樣才能得到它通過回調而無需使用所述終端。
就想出了一個主意:你可以潛在地使用'whos',然後找到類類型你感興趣的所有變量名的時候,你可以'assignin'到調用工作區並使用'eq'將每個變量與'obj'進行比較以找到正確的名稱。我會稍後看看它是否有效。 – Justin
好吧,我的評論是錯誤的,因爲你不能在嵌套函數中使用'assignin',所以現在我回到了原點。 – Justin
我在這裏展示如何檢索賦值變量名稱:http://stackoverflow.com/questions/17554012/in-matlab-is-it-possible-to-check-if-an-object-already-exists-before-創建-A/17601143#17601143。 – Oleg