Combiner des conditions
and, or, not, xor — en toutes lettres, et seulement sur des bool.
Une question suffit rarement. Archon en combine plusieurs avec quatre mots.
@entry(demarrer)
object MonProgramme {
demarrer() {
var age := 42;
var inscrit := true;
if (age >= 18 and inscrit) {
Console.print(text: "peut voter");
}
if (not inscrit) {
Console.print(text: "reste à inscrire");
} else {
Console.print(text: "déjà inscrit");
}
}
}
Quatre mots, écrits en toutes lettres
| écrit | vrai quand |
|---|---|
a and b | les deux sont vrais |
a or b | au moins un des deux est vrai |
not a | a est faux |
a xor b | exactement un des deux est vrai |
Il n’y a pas de &&, pas de ||, pas de ! : les opérateurs logiques s’écrivent comme on
les lit. Le point d’exclamation reste réservé à !=, et rien d’autre — c’est ce qui permet de
le reconnaître au premier coup d’œil.
xor est le moins courant des quatre : il est vrai quand les deux réponses diffèrent. « L’un
ou l’autre, mais pas les deux. »
Seulement sur des bool
Comme la condition d’un if, ces quatre mots n’acceptent que des bool. age and inscrit est
refusé si age est un nombre — il faut une comparaison qui rende une réponse : age >= 18 and inscrit.
C’est la même règle qu’en 3.2, appliquée un cran plus loin, et pour la même raison : un nombre n’est pas une réponse à une question.
Lire une condition composée
if (age >= 18 and inscrit) {
La comparaison se fait d’abord, le and ensuite — >= lie plus fort que and, comme * lie
plus fort que + en arithmétique. Vous n’avez donc pas à parenthéser chaque comparaison. Quand
un doute subsiste, les parenthèses sont permises et rendent l’intention explicite.
À vous
- Passez
inscritàfalse: la première condition tombe, la seconde change de branche. - Remplacez
andparoret prédisez la sortie avant d’exécuter. - Écrivez
if (age and inscrit)— sans comparaison. Le refus nomme le type qu’andattend, et redit à sa façon qu’une condition se construit avec des réponses, pas avec des nombres. - Essayez
xorentreinscritet une seconde variableboolde votre choix, et vérifiez qu’il est faux quand les deux sont vraies.