Matlabで複数のクラスコンストラクタを定義することは可能ですか?はいの場合、どうですか?複数のクラスコンストラクタMatlab
答えて
各クラスには1つのコンストラクタがあります。しかし、コンストラクタは、varargin
に基づく引数を含め、任意の数と型の引数を受け入れることができます。
だから、あなたはこのような何か(java documentationに基づい例)を書くことができるJavaでデフォルト三番目の引数の選択肢を提供するために:MATLABで
public Bicycle(int startCadence, int startSpeed, int startGear) {
gear = startGear;
cadence = startCadence;
speed = startSpeed;
}
public Bicycle(int startCadence, int startSpeed) {
gear = 1;
cadence = startCadence;
speed = startSpeed;
}
をあなたは
methods (Access = public)
function self = Bicycle(varargin)
if nargin>2
gear = varargin{3};
else
gear = 1;
end
cadence = varargin{1};
speed = varargin{2};
end
end
いいえ。OOP matlabのコンストラクタは他の言語に比べて非常に制限されています。ドキュメンテーションAFAIKでは、複数のコンストラクタを持つことはできますが、ドキュメンテーション全体を通してクラスのコンストラクタを単数で参照することは明示的には言及されていません。
http://www.mathworks.co.uk/help/techdoc/matlab_oop/brd2m9e-1.html
各クラスには、唯一の1つのコンストラクタを持ち、それぞれの.mファイルは、唯一のクラス定義を含めることができます。
入力に応じてわずかな違いがあるクラスを使用する場合は、クラスメソッドで認識されるスイッチを定義するプロパティを使用できます。入力に応じて非常に異なるクラスを使用する場合は、generateClass
関数を作成して、異なるファイルで定義されたクラスを呼び出すことができます。もちろん、これらの異なるクラスに共通のメソッドとプロパティがたくさんある場合は、両方を共通のスーパークラスのサブクラスとして作成できます。
元のポスターに注意してください:実際に継承には本当に注意してください。あなたにはたくさんのロープが掛けられています。 – learnvst
同じクラスで、初期化のプロセスだけが異なります。これらの2つの方法でインスタンスを構築するために必要なすべてのパラメータを渡すと思います。 、1ヶ月ビルド方法を定義するreパラメータ。汚いしかし速い..悲しい、私の解決策はとても理解できていた。あなたの恥をあなたに! – bsmca
@bsmca:ビルドする2つの異なる方法を実装する(静的な)メソッドをいつでも定義できます。そして、それらを共通コンストラクタから呼び出すことができます。これらのメソッドの前でも後でもオブジェクトを作成するようにしてください。 – Jonas
書くことができます追求の答えが働いていますが、その機能に慣れていないユーザーは、必要な引数の数やそれらが何であるかを知ることができません。 。。あなたは今、「自転車(」あなたは、少なくとも3つの引数を見ることができる第二の可能性はいえ示されていないことは可能と思われる待つ(プロット用など)が、私ドンを入力した場合
methods (Access = public)
function self = Bicycle(startCadence, startSpeed, startGear)
if nargin>2
gear = startGear;
else
gear = 1;
end
cadence = startCadence;
speed = startSpeed;
end
end
:私はこれをお勧めします
それは実際にあなたのために働きますか? (2014aとbで)すべての引数を指定しないと、 "入力引数が不十分です"(MATLAB:minrhs)という結果になります。これはコンストラクタ/クラスメンバではなく "フリー"関数で機能するようです。 –
- 1. クラスコンストラクタ関数のパラメータ
- 2. Matlabの複数のコア
- 3. Matlabの複数のインデックス
- 4. 複数のMATLABのステートメント
- 5. クラスコンストラクタとメンバ変数(フィールド)
- 6. 式の複数の従属変数MATLAB
- 7. fzero()複雑な関数のMatlab関数
- 8. 派生クラスコンストラクタから基本クラスコンストラクタへの引数の受け渡し
- 9. クラスコンストラクタ内の変数の命名規則
- 10. クラスコンストラクタへの引数の受け渡し
- 11. SFINAE:クラスコンストラクタ
- 12. MATLABグラフの複数の離散値
- 13. 複数のimlineとMATLABでの待機
- 14. Matlabの複数の画像を扱う
- 15. Matlabの複数行の文字列リテラル?
- 16. MATLAB GUIでの複数のコールバック
- 17. 複数インスタンスのMATLABとLD_LIBRARY_PATHの値
- 18. matlabの複数のkinect V2デバイス
- 19. 複数のプロットの凡例Matlab
- 20. 複数のMATLAB GUIをリンクする
- 21. イベント複数の電卓/ジェネレータ? - MatLab
- 22. MATLAB:スイッチで複数のケースを実行
- 23. Matlabの:(。)複素数^ * T操作
- 24. (サブ)サブプロットを含む複数のサブプロット(MATLAB)
- 25. MATLABの複素数二重配列
- 26. matlabで複数のプロットをプロットする
- 27. 複数の点を同時にMatlabアニメーション
- 28. Matlabで複数行の凡例
- 29. 複合関数のMATLAB線形マッピング
- 30. 概要Javaのクラスコンストラクタ
if文の中に "self"を作成することはできないので、最初に "self"に何かを割り当てるときはif節の前後に来なければなりません。 – Jonas
はこの解決策に終わった:) tnx! – bsmca