Hvorfor får jeg en "For mange argumenter" feil når den ikke passerer noen?

stemmer
7

Jeg jobber med noen enkle objektorientert kode i MATLAB. Jeg prøver å ringe en av mine klassemetoder uten input eller output argumenter i sin definisjon.

Funksjon definisjon:

function roll_dice

Funksjonskall:

obj.roll_dice;

Når dette er utført, sier MATLAB:

??? Error using ==> roll_dice
Too many input arguments.

Error in ==> DiceSet>Diceset.Diceset at 11
obj.roll_dice;
(etc...)

Alle som har noen ideer hva som kan være årsaken det? Er det hemmelige automatiske argumenter jeg er klar over at jeg har bestått?

Publisert på 03/04/2009 klokken 20:32
kilden bruker
På andre språk...                            


2 svar

stemmer
13

Når du ringer:

obj.roll_dice;

Det er faktisk tilsvarende:

roll_dice(obj);

objer den "hemmelige" automatisk argumentet som sendes til roll_dice. Hvis du også skrive om metoden roll_dicetil å godta en enkel inngang argument (selv om du ikke bruker den), bør ting fungerer riktig.

Alternativt, hvis du vet sikkert at metoden roll_diceikke kommer til å utføre operasjoner på klassen objektet, kan du erklære at det skal være en statisk metode som Dan antyder .

For mer informasjon om objektorientert programmering i MATLAB, her er en link til elektronisk dokumentasjon .

Svarte 03/04/2009 kl. 20:34
kilden bruker

stemmer
3

Jeg tror du kan også komme rundt dette ved å erklære roll_dice å være en statisk metode.

Svarte 09/04/2009 kl. 20:59
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more