1
我想創建一個Matlab類,其中方法屬性在類構造函數中更改。這樣做的目的是隱藏/顯示某些方法,具體取決於類輸入。更改Matlab的方法屬性
例如:
classdef (HandleCompatible) myClass < dynamicprops & handle % & hgsetget
properties (Hidden)
myProp
end
methods (Hidden)
function obj = myClass(input)
%class constructor
%add some dynamic properties
switch input
case 1
%unknown code:
%make myMethod1 visible
case 2
%unknown code:
%make myMethod2 visible
otherwise
%unknown code:
%make myMethod1 visible
%make myMethod2 visible
end
end
end
methods (Hidden)
function myMethod1 (obj, input)
%function...
end
function output = myMethod2(obj, input)
%function...
end
end
end
我嘗試使用以下命令:
mco = metaclass(obj);
mlist = mco.MethodList;
mlist(myMethod1Index).Hidden = false;
,但我得到了以下錯誤:
Setting the 'Hidden' property of the 'meta.method' class is not allowed.
感謝您回覆。
這可能是一個解決方案,如果我需要在類構造函數中選擇性地訪問我的方法。雖然,我需要在我的程序中使用這些方法,並讓他們可見或不可見,在標籤完成:
%Obj1
myObj1 = myClass (inputs, '-1');
myObj1.myMethod1(arg);
%myObj1.myMethod2 - hidden
%Obj2
myObj2 = myClass (inputs, '1');
%myObj2.myMethod1 - hidden
value1 = myObj2.myMethod2(arg);
%Obj3
myObj3 = myClass (inputs, '0');
myObj3.myMethod1(arg);
value2 = myObj3.myMethod2(arg);
%here i want to be able to access both methods
也許是可以選擇的方法屬性,類構造函數的過程,並更改屬性。但是這必須在不使用元類的情況下完成