超类的不同输入数量
Vary number of inputs for superclass
B 是 A 的子类。我想用两个参数调用 B,如 B(arg1, arg2) 并在 B 的构造函数中将 arg1 传递给 A。代码如下所示:
classdef A
properties
arg1;
end
methods
function a = A(arg1)
if nargin > 0
a.arg1 = arg1;
end
end
end
end
classdef B < A
properties
arg2
end
methods
function b = B(arg1, arg2)
b@A(arg1);
if nargin > 0
b.arg2 = arg2;
end
end
end
end
到目前为止,还不错。现在,有时我想调用不带参数的 B (例如初始化一个数组)。显然调用 B() 会引发错误,输入不足。也禁止在条件中调用 As 构造函数。
是否有任何标准方法来解决这个问题,基本上是能够使用 0 和 n 个参数调用子类?
干杯
使用varargin
classdef B < A
properties
arg2
end
methods
function b = B(varargin)
%pass all but the last argument to the super constructor
b@A(varargin{1:nargin-1});
if nargin > 0
b.arg2 = varargin{2};
end
end
end
end
B 是 A 的子类。我想用两个参数调用 B,如 B(arg1, arg2) 并在 B 的构造函数中将 arg1 传递给 A。代码如下所示:
classdef A
properties
arg1;
end
methods
function a = A(arg1)
if nargin > 0
a.arg1 = arg1;
end
end
end
end
classdef B < A
properties
arg2
end
methods
function b = B(arg1, arg2)
b@A(arg1);
if nargin > 0
b.arg2 = arg2;
end
end
end
end
到目前为止,还不错。现在,有时我想调用不带参数的 B (例如初始化一个数组)。显然调用 B() 会引发错误,输入不足。也禁止在条件中调用 As 构造函数。
是否有任何标准方法来解决这个问题,基本上是能够使用 0 和 n 个参数调用子类?
干杯
使用varargin
classdef B < A
properties
arg2
end
methods
function b = B(varargin)
%pass all but the last argument to the super constructor
b@A(varargin{1:nargin-1});
if nargin > 0
b.arg2 = varargin{2};
end
end
end
end