Enums de chaînes comme unions
Fait partie de la section Introduction à Luau du Journey Lua de Coddy. Leçon 53 sur 73.
Les nombres rendent les journaux cryptiques : voir 2 vous apprend peu de choses, tandis que voir "down" vous apprend tout. Pour obtenir des énumérations lisibles, les types d’union littérale de Luau sont l’outil idéal : un type dont les membres sont des chaînes exactes :
type Direction = "up" | "down" | "left" | "right"
local facing: Direction = "up" -- ✓
local typo: Direction = "upp" -- ✗ erreur de type pendant l'éditionUne variable annotée avec Direction peut contenir ces quatre chaînes et rien d’autre. Si vous en orthographiez une incorrectement, le vérificateur le détecte instantanément : le bug n’atteint jamais un joueur.
À l’exécution, les valeurs sont de simples chaînes. Affichez-les, concaténez-les, comparez-les avec ==. Tout ce que vous savez sur les chaînes s’applique :
print(facing) -- haut
print(`facing {facing}`) -- face vers le hautComparez les deux modèles dont vous disposez maintenant : la table de constantes crée une valeur d’exécution (UserRole) contenant des membres, tandis que l’union littérale ne crée aucune valeur. Il n’existe aucune table Direction, seulement une règle que le vérificateur applique concernant les chaînes acceptées. Des valeurs descriptives et auto-documentées, sans aucun coût à l’exécution, font des unions littérales le style d’énumération privilégié dans le code Luau.
Défi
FacileCréez un type d’union littéral nommé Direction avec les membres "up", "down", "left" et "right".
Créez quatre variables, chacune annotée avec Direction :
upDirection="up"downDirection="down"leftDirection="left"rightDirection="right"
Affichez, chacune sur sa propre ligne :
upDirectiondownDirectionleftDirectionrightDirection- le message
The player moves left, construit par interpolation de chaîne à partir deleftDirection
Essayez vous-même
-- Écrivez le code ici
-- 1) définir le type Direction comme une union des quatre littéraux de chaîne
-- 2) créer les quatre variables annotées
-- 3) afficher chacune, puis le message interpolé
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Introduction à Luau
1Premiers pas avec Luau
Qu'est-ce que Luau ?Pourquoi utiliser Luau ?Votre premier code LuauVérification de type et modes d'erreurRécapitulatif : Introduction à Luau4Travailler avec les fonctions
Typage des paramètres et valeurs de retourTypage des fonctions anonymesFonctions ne retournant rienParamètres optionnelsValeurs par défaut des paramètresFonctions variadiquesDéfinition des types de fonctionsRécapitulatif : Fonctions typées2Types fondamentaux
Types de base : num, str, boolLe type 'any' : la porte de sortieLe type 'unknown'Types Nil et optionnelsL'inférence de type en actionAnnotations explicites de typeRécapitulatif : Pratique des types fondamentaux5Alias, unions et intersections
Alias de types pour les types primitifsTypes unionsTravailler avec les types unionsTypes littérauxTypes intersectionsCombinaison d'alias de typesRécapitulatif : Combinaisons de types avancées8Les Enums, à la manière de Luau
Le pattern Enum dans LuauEnums numériques avec des tablesEnums de chaînes comme unionsUtiliser des Enums d'unions littéralesGeler les tables de constantesRécapitulatif : Les Enums, à la manière de Luau3Tables typées : Tableaux et Maps
Tableaux typésAjout et lecture d'élémentsQu'est-ce qu'un type Map ?Déclaration et accès aux MapsItération sur les tablesTables à formes mixtesTableaux typés multidimensionnelstable.unpack et VarargsRécapitulatif : Tableaux et MapsEntraînez-vous par vous-même : Compilateur Lua en ligne