Hash :
ce10e043
Author :
Thomas de Grivel
Date :
2025-05-19T12:47:56
Translate using ChatGPT
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.
# 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
# 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
```elixir
# 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](1.23_Tuple)
Suivant : [1.25 Faits](1.25_Facts)