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. Matlabの複数のインデックス
- 2. Matlabの複数のコア
- 3. クラスコンストラクタ内の変数の命名規則
- 4. クラスコンストラクタへの引数の受け渡し
- 5. Matlabの複数行の文字列リテラル?
- 6. 複合関数のMATLAB線形マッピング
- 7. イベント複数の電卓/ジェネレータ? - MatLab
- 8. 複数の点を同時にMatlabアニメーション
- 9. 複数のMATLAB GUIをリンクする
- 10. `this`とクラスコンストラクタ
- 11. デモータとクラスコンストラクタの法則
- 12. MATLABは、MATLABで変数名
- 13. MATLABの1つのFigureに複数の眼図を表示
- 14. マトリックス要素の中の複数の値matlab?
- 15. Matlab:ループのないベクトルの複数の代入
- 16. Matlabの画像に複数のリンクを挿入するには?
- 17. matlab:複数のグループに属する観測値のグループ化
- 18. 複数の開発者によるMatlab Simulinkのバージョン管理
- 19. 1つのレベルを持つ複数のMATLAB等高線プロット
- 20. Matlabのフォルダにある複数の画像を読む
- 21. matlabで複数の無地の四角形を描く
- 22. matlab:複数の軌道の変位計算
- 23. MATLAB/Simulinkは - プログラム的に、複数の外部入力
- 24. MATLABで複数の時系列を扱うには?
- 25. 複数のヒストグラムをmatlabで異なる色でプロットする
- 26. matlabプロットでタイトルを複数の行に分割する方法
- 27. FORループ内に複数の行をプロットするMATLAB
- 28. matlabで複数のインデックスで項目を検索する方法
- 29. 複数のフォルダmatlabにアクセスして同じマットに保存
- 30. Matlabに複数のmartrixファイルを読み込む
if文の中に "self"を作成することはできないので、最初に "self"に何かを割り当てるときはif節の前後に来なければなりません。 – Jonas
はこの解決策に終わった:) tnx! – bsmca