Syntaxe

Crée un enregistrement neuf d’un TYPE et passe les arguments à sa méthode New, le constructeur, s’il en a une.

NEW <Type>[(<arguments>)]
<name> AS <Type> = NEW <Type>(<arguments>)
METHOD New([<parameter> = <default>, …])

Les éléments

<Type>Un TYPE déclaré dans le programme. Un nom inconnu est une erreur de compilation : « Unknown BASIC type ».
<arguments>Les valeurs passées à la méthode New. Sans parenthèses, New s’exécute sans argument.
<name>La variable qui reçoit l’enregistrement.
<parameter>Un paramètre du constructeur.
<default>Sa valeur par défaut. Donnez-en une à chaque paramètre de New.

À savoir

  • NEW fonctionne dans une déclaration, dans une affectation ultérieure (b = NEW Counter(2)) et comme argument d’appel.
  • Toutes les autres créations appellent New sans argument : x AS T, chaque case de DIM a(n) AS T, AddElement() sur une liste d’enregistrements, une nouvelle entrée de map, un champ d’enregistrement de ce type.
  • Donnez donc une valeur par défaut à chaque paramètre de New. Un paramètre typé sans valeur par défaut arrête le programme (« BASIC integer requires an integral value »), et un paramètre non typé laisse le champ sans valeur.
  • Une copie n’exécute pas New : b = a et x AS T = other recopient les champs tels quels.
  • Il n’y a pas d’AllocateStructure (PureBasic) : écrivez p AS Point ou NEW Point().

Exemple

TYPE Counter  value AS integer  METHOD New(start AS integer = 0)    SELF.value = start  ENDMETHODENDTYPEa AS Counterb AS Counter = NEW Counter(7)a = NEW Counter(2)Console(Str(a.value) + " " + Str(b.value))   ' 2 7