1.7 KiB
1.7 KiB
Exemples / DO-DON'T — Chapitre 6 — Types, variables, constantes et scopes
Document compagnon. Les exemples illustrent les règles du chapitre ; la formulation normative reste dans le chapitre lui-même.
Exemples extraits du chapitre
Exemple 1
{
int32 value = 1;
}
{
int32 value = 2;
}
Exemple 2
foo(a(), b(), c())
Exemple 3
Type value = ...;
Exemple 4
const Type value = ...;
Exemple 5
interdit la réaffectation du binding
interdit toute mutation obtenue uniquement à travers ce binding
n'impose aucune immutabilité globale à l'objet éventuellement référencé
n'affecte pas les autres alias mutables légitimes
Exemple 6
User a = ...;
const User b = a;
a::setName("John"); // OK
b::setName("John"); // ERROR
b::getName(); // OK et observe la modification faite via a
Exemple 7
const User user = ...;
user::address::getCity(); // OK si const method
user::address::setCity("Paris"); // ERROR
Exemple 8
const User source = ...;
User mutable = source; // ERROR
Exemple 9
User source = ...;
const User readonly = source; // OK
Exemple 10
const int32 a = 10;
int32 b = a; // OK
b = 20; // OK
Exemple 11
class Document {
const User owner;
}
Exemple 12
this::owner = other; // ERROR après initialisation
this::owner::setName(...); // ERROR via cet accès
DO / DON'T / WHY / compiler error / edge cases
À consolider progressivement avant la baseline publique V3 et à transformer, lorsque pertinent, en tests de conformité de la toolchain.