Syntaxe

Ouvre un bloc où \field vaut <record>.field, n’importe où sur la ligne, pour écrire moins quand beaucoup de lignes touchent le même enregistrement.

WITH <record>
  \<field> …
  \<field>\<subfield> …
  \<field>.<subfield> …
ENDWITH
END WITH

S’écrit aussi : ENDWITH

Les éléments

<record>N’importe quelle expression d’enregistrement : une variable, fleet(i), l’élément courant d’une liste foes().
<field>Un champ de l’enregistrement.
<subfield>Un champ d’un champ enregistrement. Écrivez la chaîne avec \ ou avec ..

À savoir

  • Le bloc se ferme par ENDWITH ou END WITH.
  • L’expression de l’enregistrement est relue à chaque \. Avec WITH fleet(i), changer i dans le bloc envoie les lignes suivantes vers une autre case.
  • Les blocs WITH ne s’imbriquent pas. Un WITH dans un WITH est une erreur de compilation : « Nested WITH blocks are not supported ».
  • Le texte des chaînes et des commentaires n’est pas touché : "C:\games" reste un chemin.
  • Hors d’un WITH, hero\fuel est refusé avec « Not a BASIC statement ». Écrivez hero.fuel.
  • Un seul mot après WITH ouvre un bloc d’enregistrement. Deux mots, le premier étant une famille de commandes (WITH SPRITE s), ouvrent à la place le raccourci de commandes.

Exemple

TYPE Vec  x AS float  y AS floatENDTYPETYPE Ship  name AS string  fuel AS integer  pos AS VecENDTYPEs AS ShipWITH s  \name = "Comet"  \fuel = 80  \pos\x = 1.5  \pos.y = 2.5  Console(\name + " " + Str(\fuel) + " " + Str(\pos\x + \pos\y))   ' Comet 80 4ENDWITH