1.24 Variables

Les variables en KC3 peuvent être définies à l'aide de la valeur littérale ?, qui représente une variable non initialisée. Vous pouvez appliquer un cast à cette valeur, ce qui ne la convertit pas réellement, mais permet de créer une variable typée. Par exemple : (List) ?.

Cette valeur littérale typée ne pourra être affectée qu'une seule fois, et uniquement avec une valeur correspondant au type de la variable, dans cet exemple, une liste chaînée.

Il s'agit en réalité d'une syntaxe, ce qui signifie que vous ne pouvez pas renommer ? par erreur, et cela facilite l’analyse statique de la création des variables.

Le type par défaut d'une variable, que vous pouvez aussi spécifier explicitement, est Tag, qui est une union étiquetée de tous les types KC3 définis dans l’environnement. Ainsi, ? est strictement équivalent à (Tag) ?, et les deux peuvent recevoir une unique valeur de n'importe quel type.

Une variable ne peut être affectée qu'une seule fois et ne peut pas être modifiée ensuite (à moins d’écrire du code C et de le lier, mais cela est ni simple ni silencieux).

Grâce à cela, vous n'avez pas besoin de mécanismes de verrouillage ou de protection : une fois qu’une variable est initialisée, sa valeur ne change plus. Elle devient véritablement en lecture seule.

Vous pouvez utiliser l’opérateur d’assignation <-, qui appelle en interne tag_init_copy. Il fonctionne comme l’opérateur = en C.

1.24.1 Exemples

# Déclare une variable "x" de type entier non signé 8 bits.
x = (U8) ?
# Affecte la valeur zéro à la variable "x".
x <- 0
# Alloue à nouveau une variable "x"
x = (U8) ?
# Affecte encore la valeur zéro à la nouvelle variable "x"
x <- 0

Top : Documentation KC3

Précédent : 1.23 Tuple

Suivant : 1.25 Faits