1
在具有依賴屬性c
的類中,我想用第三個參數調用c
的setter,該參數等於'a'
或'b'
,選擇要更改哪個獨立屬性以設置c
。用額外的參數調用setter? - MATLAB
的代碼是
classdef test < handle
properties
a
b
end
properties (Dependent = true)
c
end
methods
function c = get.c(obj)
c = obj.a + obj.b;
end
function obj = set.c(obj, value, varargin)
if(nargin == 2)
obj.a = value - obj.b;
end
if(nargin == 3 && argin(3) == 'a') % how do I enter this loop?
obj.a = value - obj.b;
end
if(nargin == 3 && argin(3) == 'b') % or this?
obj.b = value - obj.a;
end
end
end
end
此調用工作:
myobject.c = 5
但我怎麼叫二傳手與第三參數等於'a'
或'b'
?
你也許能如果你重寫subsref – janh
@janh:但是你不能使用像'myObject.c = 5'這樣的語法,你必須做一些非標準的,也許是不直觀的,比如'myObject.c('a')= 5 ' –
afaik你不能重寫'set.c(obj)'Matlab不允許它。然而,正如你所指出的,你可以重寫subsref來模仿'set.c(obj,value)'。是的,你仍然需要像'myObject.c = {5,'b'}''。我使用'myObject.set_c'來解決Matlab不允許覆蓋子類中的getter的問題。所有說的,對象需要重構;) – janh