Déclarer une valeur
Nommer une valeur avec var, la figer avec const, et la flèche := qui les pose.
Deux mots suffisent à retenir quelque chose : var pour ce qui peut changer, const pour ce
qui ne le doit pas.
@entry(demarrer)
object MonProgramme {
demarrer() {
var salutation := "Bonjour";
salutation := "Salut";
const NOM := "Simon Magus";
Console.print(text: salutation + ", " + NOM + " !");
}
}
Exécutez-le : Salut, Simon Magus !. La salutation valait « Bonjour » avant de valoir
« Salut » ; le nom, lui, n’a pas bougé et ne bougera pas.
var — un nom sur une valeur qui peut changer
var salutation := "Bonjour"; déclare salutation et lui donne un texte. La ligne suivante le
change : salutation := "Salut";. C’est la même flèche dans les deux cas, et ce n’est pas un
hasard — déclarer et réassigner, c’est le même geste, poser une valeur sous un nom.
Le type ne se dit pas, il se suit. Vous n’avez écrit nulle part que salutation est un
texte ; le compilateur le déduit des guillemets. Il n’en est pas moins fixé pour de bon :
salutation est un texte pour toute sa vie, et lui assigner autre chose plus loin serait refusé.
Rien n’empêche de l’écrire quand même, quand on veut être explicite :
var salutation: str := "Bonjour";
Ce que vous gagnez alors, ce n’est pas la sécurité — elle était déjà là — c’est de dire au lecteur, sans qu’il ait à le déduire, ce que cette variable contient.
const — une valeur qui ne bougera plus
const NOM := "Simon Magus"; déclare la même chose, à ceci près que le compilateur refusera
toute tentative de la changer. Essayez d’ajouter NOM := "quelqu'un d'autre"; et lisez la
réponse :
error[D001]: 'NOM' is declared 'const': its value cannot change
Ce n’est pas une politesse, c’est une garantie : quiconque lit la suite du programme sait que
NOM vaut encore ce qu’il valait à sa déclaration, sans avoir à relire ce qu’il y a entre les
deux. Le type y est optionnel comme pour var — const G := 9.81; suffit.
Assembler des textes avec +
La dernière ligne mérite un mot. Console.print n’accepte qu’un seul texte, et nous en
avons deux à montrer — plus la ponctuation entre les deux. Le signe + les met bout à bout :
salutation + ", " + NOM + " !"
Quatre morceaux collés en un seul texte : la variable, une virgule, la constante, un point
d’exclamation. C’est cela que print reçoit.
Et c’est lourd. Quatre morceaux pour une phrase de trois mots, avec des guillemets à ouvrir
et refermer autour de chaque bout de ponctuation, et des espaces qu’il faut penser à mettre
dans les guillemets — oubliez celui de ", " et vous obtenez Salut,Simon Magus. La phrase
qu’on veut lire n’apparaît nulle part en entier : elle est en pièces détachées, et c’est au
lecteur de la remonter dans sa tête.
Il y a une écriture plus légère, qui montre la phrase telle qu’elle sortira. C’est le sujet de
la sous-section suivante — d’ici là, + fait le travail.
:=, et pas =
Vous l’avez sous les yeux depuis le début de la page : Archon écrit := pour assigner, à la
déclaration comme à la réassignation. Le signe = seul n’assigne pas — il est réservé à un
autre usage, qu’on verra en son temps.
Retenez la flèche pour l’instant : partout où vous voulez poser une valeur sous un nom, c’est
:=. Et si l’oubli vous échappe, le compilateur vous le dira plutôt que de deviner à votre
place.
À vous
- Changez
var salutationenconst salutationet exécutez : le compilateur nomme la ligne fautive et la raison. - Déclarez
var ville := "Alexandrie";puis, plus bas,ville := 12;. Le refus vous dira que le type d’une variable est fixé à sa déclaration. - Déclarez deux fois le même nom —
var salutation := "Bonsoir";une seconde fois. Un nom ne se réutilise pas dans la même portée, et le compilateur nomme celui qui était déjà pris.