Files
saselang-bible/chapters/006-types-variables-constantes-et-scopes.md
2026-09-12 08:56:27 +02:00

1.5 KiB

6. Types, variables, constantes et scopes

6.1 Typage explicite — V1 REQUIS — FIGÉ

Une variable possède un type explicite.

Pas de var, let ou auto utilisé comme inférence générale de l'identité de type d'une variable.

Les littéraux suivent les règles de contextual typing figées à la section 5.7 ; cela ne constitue pas une inférence générale du type des variables.

6.2 Definite assignment — V1 REQUIS — FIGÉ

Une variable peut être déclarée sans valeur initiale seulement si le compilateur prouve qu'elle est assignée avant toute lecture.

Une constante peut être assignée exactement une fois sur plusieurs chemins si le compilateur prouve l'unicité et la complétude de l'assignation.

6.3 Shadowing — V1 REQUIS — FIGÉ

Le shadowing est interdit tant qu'une déclaration précédente de même nom est visible.

Réutilisation autorisée après fin complète du scope précédent :

{
    int32 value = 1;
}
{
    int32 value = 2;
}

Deux branches disjointes peuvent réutiliser le même nom.

6.4 Blocs anonymes — V1 REQUIS — FIGÉ

Un bloc exécutable anonyme peut créer un scope à l'intérieur d'une fonction, méthode, clsmethod, construct ou destruct.

Les blocs exécutables anonymes top-level sont interdits dans les sources ordinaires.

6.5 Ordre d'évaluation — V1 REQUIS — FIGÉ

Les opérandes et arguments sont évalués de gauche à droite et une seule fois.

Exemple :

foo(a(), b(), c())

évalue a(), puis b(), puis c().