私はMATLABの単純なオブジェクト指向のコードに取り組んでいます。私はその定義に入力または出力引数を持たないクラスメソッドを呼び出すことを試みています。何も渡さないと「入力引数が多すぎます」というエラーが表示されるのはなぜですか?
関数定義:
function roll_dice
ファンクションコール:
obj.roll_dice;
これを実行すると、MATLABは言う:
??? Error using ==> roll_dice
Too many input arguments.
Error in ==> DiceSet>Diceset.Diceset at 11
obj.roll_dice;
(etc...)
誰もが何が可能性が任意のアイデアを持っています私を引き起こすt?私が渡していることを知らない秘密の自動議論はありますか?
roll_dice(obj);
のでobj
がroll_dice
に渡される "秘密" 自動引数である:それは実際に相当し
obj.roll_dice;
:あなたが電話をかける
つまり、オブジェクトのメソッドではないときに、roll_dictがメソッドとして呼び出されています。 obj.roll_dice()の代わりにroll_dice()を試してください。 –
それはうまくいくかもしれませんが、彼はroll_diceがクラスメソッドだと言っていますので、特定のオブジェクトで操作することを意図しています。 – gnovice
あなたは正しかったが、今は別の問題がある。私はJavaやPHPのような言語から来ていますが、クラスを使うのはかなり簡単です。 self.roll_diceまたはthis.roll_diceに相当するものは何ですか? – farr