Syntaxe
Déclare une fonction qui appartient à un TYPE. À l’intérieur, SELF est l’enregistrement sur lequel la méthode est appelée.
METHOD <method>([<parameter>, …])
SELF.<field>
EXITMETHOD [<value>]
RETURN [<value>]
ENDMETHOD
<record>.<method>([<argument>, …])S’écrit aussi : ENDMETHOD, EXITMETHOD, SELF
Les éléments
| <method> | Le nom de la méthode. La casse ne compte pas. New et Delete sont particulières : voir NEW et DELETE. |
|---|---|
| <parameter> | Un paramètre, écrit comme pour une FUNCTION : typé, avec valeur par défaut, OPTIONAL, REF ou variadique. |
| <field> | Un champ de l’enregistrement, ou une autre méthode : SELF.Reset(). |
| <value> | La valeur rendue par la méthode. Facultative. |
| <record> | N’importe quel enregistrement : une variable, une case de tableau (counters(2)), l’élément courant d’une liste (counters()). |
| <argument> | Une valeur passée au paramètre correspondant. |
À savoir
- Une méthode se déclare dans son TYPE, parmi les champs. Les parenthèses sont obligatoires, même vides :
METHOD Reset(). - Écrire
SELF.valuemodifie l’enregistrement sur lequel la méthode est appelée, y compris une case de tableau ou un élément de liste. EXITMETHOD <value>etRETURN <value>quittent la méthode avec une valeur.ENDMETHODne prend pas de valeur, contrairement àENDFUNCTION.- Une méthode n’a pas de type de retour :
METHOD Half() AS integerest refusé (« Invalid field in BASIC type »). Convertissez la valeur vous-même avant de la rendre. - Refusés à la compilation : une METHOD hors d’un TYPE (« METHOD requires a containing TYPE »), une METHOD dans une METHOD, deux méthodes de même nom dans un TYPE, une valeur après
ENDMETHOD, etEND METHODen deux mots. - Ne nommez pas une méthode
Length,Find,Sort,InsertouRemove. Ces noms appartiennent aux membres des tableaux, et l’appel arrête le programme. - Une copie d’un enregistrement a les mêmes méthodes. Dans un programme avec
DO … LOOP, une variable du programme utilisée par une méthode doit être déclaréeGLOBAL, comme pour toute FUNCTION.
Exemple
TYPE Counter value AS integer METHOD Add(amount AS integer) SELF.value = SELF.value + amount EXITMETHOD SELF.value ENDMETHOD METHOD Reset() SELF.value = 0 ENDMETHODENDTYPEc AS CounterConsole(Str(c.Add(5))) ' 5Console(Str(c.Add(3))) ' 8c.Reset()Console(Str(c.value)) ' 0Dans le manuel : Enregistrements et méthodes