Syntaxe

Marque un paramètre de FUNCTION qui reçoit la variable même de l’appelant au lieu d’une copie, pour que la fonction puisse la modifier.

<name> REF AS <type>
<name> BYREF AS <type>

S’écrit aussi : BYREF

Les éléments

<name>Le nom du paramètre. Écrivez-le sans sigil.
<type>Le type du paramètre. Obligatoire. La valeur écrite par le paramètre y est convertie.

À savoir

  • REF et BYREF sont le même mot. Les deux se placent après le nom et avant AS. L’ordre de Visual Basic BYREF n AS integer est refusé (« Invalid BASIC parameter »), tout comme REF sans type.
  • L’argument doit être un emplacement qu’on peut affecter : une variable, un champ d’enregistrement, un élément de tableau, l’élément courant d’une liste ou une entrée de map. Un littéral ou une expression donne « REF argument is not assignable ».
  • Le type s’applique toujours : un REF AS integer qui reçoit une variable décimale y écrit un entier.
  • Une fonction peut transmettre son propre paramètre REF à un autre paramètre REF ; la modification atteint le premier appelant.
  • Un paramètre REF ne peut pas être OPTIONAL ni variadique.
  • N’y mettez pas de sigil. text$ REF AS string se compile, mais le programme ne tourne plus dès que le corps lit text$. Écrivez text REF AS string.
  • Sans REF, un paramètre non typé partage déjà un enregistrement ou un tableau avec l’appelant ; un paramètre typé en reçoit une copie. Pour garder un lien au-delà d’un appel, utilisez un handle (@).

Exemple

FUNCTION SwapValues(a REF AS integer, b REF AS integer)  LOCAL t AS integer = a  a = b  b = tENDFUNCTIONx AS integer = 1y AS integer = 2SwapValues(x, y)Console(Str(x) + " " + Str(y))   ' 2 1
Dans le manuel : Fonctions