Bases du langage

Chaque instruction se termine là où la suivante commence — les points-virgules sont optionnels et rarement utilisés en pratique. Les commentaires existent sous deux formes :

// un commentaire de ligne, va jusqu'à la fin de la ligne

/* un commentaire de bloc,
   peut s'étendre sur plusieurs lignes */

Déclarer quelque chose nécessite toujours le préfixe ton., suivi d'un mot-clé de type et d'un nom :

ton.int age = 25
ton.function saluer(nom) {
    print("Bonjour, " + nom)
}

Faire référence à quelque chose déjà déclaré — lire une variable, la réassigner, appeler une fonction, ou nommer un paramètre de fonction — accepte la forme préfixée ou la forme nue ; le parseur traite ton.x et x de façon identique une fois que x existe dans le scope :

ton.int age = 25
print(ton.age)   // ok
print(age)        // ok aussi — même variable
age = age + 1      // ok aussi

Les paramètres de fonction s'écrivent conventionnellement sans le préfixe (ton.function saluer(nom) { ... }, pas ton.function saluer(ton.nom)), comme le fait chaque exemple de ce document et de exemples/.

Une assignation nue peut seulement réassigner une variable existante — age = 5 échoue avec "was never declared" à moins que quelque chose ait déjà déclaré age plus tôt. Pour introduire une toute nouvelle variable, il faut toujours la forme complète ton.<type> nom = valeur.

ton.let, ton.var et ton.const — ton.let déclare une variable sans type fixe (ton.var est un synonyme). ton.const fait de même mais interdit de la réassigner ensuite : PI = 3 après ton.const PI = 3.14 est une erreur d'exécution. Les déclarations typées (ton.int, ton.string, ...) vérifient toujours le type de la valeur initiale.

ton.let nimporte = 42
nimporte = "maintenant une chaîne"   // ok : ton.let n'a pas de type fixe
ton.const MAX_USERS = 100
MAX_USERS = 5                        // Erreur : Cannot reassign 'ton.MAX_USERS': it was declared with ton.const.

Littéraux numériques — en plus de 42 et 3.14 : 1_000_000 (les underscores sont ignorés), 1e9 / 2.5e-3 (exposant), 0xFF (hexadécimal), 0b1010 (binaire), 0o755 (octal).

Les points-virgules sont optionnels ; ils servent à mettre plusieurs instructions sur une ligne : self.x = x; self.y = y.

Modifier cette page sur GitHub