サブクラスコンストラクタでスーパークラスの引数検証(arguments)を継承する方法
조회 수: 5 (최근 30일)
이전 댓글 표시
例えばスーパークラスが以下で定義されているとします.
classdef SuperClass < handle
properties
n
a
b
end
methods
function obj = SuperClass(n,opt)
arguments
n
opt.a = 1
opt.b = 2
end
obj.n = n;
obj.a = opt.a;
obj.b = opt.b;
end
end
end
上記を継承し,オプション引数(opt)としてパラメータcを追加したサブクラスを作成したいとします.
思い描く理想的な擬似コードは以下です.
classdef SubClass < SuperClass
properties
c
end
methods
function obj = SubClass(n,opt)
arguments
% スーパークラスで行っているn, opt.a,
% opt.bの検証もここで行ってほしい.同じことを記載しないといけないのか?
opt.c = 3
end
% ここでスーパークラスのコンストラクタが呼ばれる??
% n, opt.a, opt.bを引数として受け取り,スーパークラスのコンストラクタをコールしたい.
obj.c = opt.c;
end
end
end
一方で,動作するように改修したSubClassコードは以下です.
classdef SubClass < SuperClass
properties
c
end
methods
function obj = SubClass(n,opt,opt2)
arguments
% スーパークラスで行っている検証をもう一度書きたくない.
% オプションの項目,初期値も含めてスーパークラスの値を継承したい
n
opt.a = 1
opt.b = 2
%%%%%%%%%%%%%
opt2.c = 3
end
% スーパークラスのコンストラクタ
varargin = namedargs2cell(opt);
obj@SuperClass(n,varargin{:});
obj.c = opt2.c;
end
end
end
クラスに関する基本的な理解が乏しくて申し訳ないのですが,質問は以下です.
”理想的な擬似コード”や”改修したSubClassコード”のコメントに記載したように,SubClassの引数検証においてSuperClassですでに記述している引数検証を省略(継承)する方法はありますか?可能な場合どのような方法があるでしょうか.またSuperClassのコンストラクタをどのようにコールすればよろしいでしょうか?
답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 アセンブリ에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!