Types littéraux
Fait partie de la section Introduction à Luau du Journey Lua de Coddy. Leçon 33 sur 73.
Les types comme string autorisent n’importe quelle chaîne, mais parfois seules quelques valeurs exactes ont du sens. Un type littéral utilise la valeur elle-même comme type :
local mode: "dark" = "dark" -- seule la chaîne "dark" est autorisée
local locked: true = true -- seul le booléen true est autoriséPris isolément, les types à valeur unique sont une curiosité. Combinés à des unions, ils deviennent l’un des outils les plus utiles de Luau : un ensemble strictement contrôlé de valeurs autorisées :
type Direction = "north" | "south" | "east" | "west"
type GameState = "menu" | "playing" | "paused" | "gameover"
local move: Direction = "north" -- ✓
local state: GameState = "playing" -- ✓
-- local bad: Direction = "diagonal" -- ✗ erreur de type !Désormais, une faute de frappe comme "nort" ou une valeur invalide comme "diagonal" est détectée pendant que vous modifiez le code ; avec un simple string, elle passerait inaperçue et provoquerait une erreur à l’exécution, si vous avez la chance de vous en rendre compte.
Les types littéraux sont sensibles à la casse et exacts : "North" ne correspond pas à "north". Les littéraux de chaîne sont les plus courants, mais les littéraux booléens et (dans les versions plus récentes de Luau) les littéraux numériques fonctionnent de la même manière. Ce modèle, une union de littéraux de chaîne, est également la façon dont Luau remplace les énumérations d’autres langages, comme vous le verrez dans un chapitre ultérieur.
Défi
FacileCrée trois alias de type d’union littérale :
Direction="north" | "south" | "east" | "west"GameState="menu" | "playing" | "paused" | "gameover"Difficulty="easy" | "medium" | "hard"
Déclare, en utilisant les alias :
playerDirection: Direction="north"currentState: GameState="playing"selectedDifficulty: Difficulty="medium"
Crée une fonction movePlayer(direction: Direction): string qui renvoie "Moving [direction]", ainsi qu’une fonction updateGameState(state: GameState): string qui renvoie "Game state: [state]".
Affiche, chacune sur sa propre ligne :
movePlayer(playerDirection)updateGameState(currentState)- la valeur de
selectedDifficulty
Essayez vous-même
-- Écrivez le code ici
-- typer Direction / GameState / Difficulty comme des unions littérales
-- déclarer playerDirection, currentState, selectedDifficulty
-- movePlayer(direction: Direction): string -> "Moving [direction]"
-- updateGameState(state: GameState): string -> "Game state: [state]"
-- afficher les trois résultats
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ées3Tables 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