Types de données en Luau

Introduction à Luau et aux types de données

Luau, un langage dérivé de Lua 5.1, est un langage de programmation dynamique. Cela signifie qu'il attribue automatiquement le type de données d'une variable en fonction de la valeur qu'elle reçoit. Les types de données en Luau définissent la nature d'une valeur assignée à une variable.

Les types de données fondamentaux

Luau prend en charge huit types de données intégrés, hérité de Lua :

  1. nil : Indique l'absence de valeur ou une valeur différente des autres.
  2. boolean : Peut contenir les valeurs true ou false.
  3. number : Représente des valeurs numériques.
  4. string : Stocke des chaînes, qui peuvent être entourées de simple ou double guillemets.
  5. function : Contient des fonctions comme valeur.
  6. userdata : Utilisé lorsque Luau doit traiter des valeurs sous forme de tableau.
  7. thread : Gère des threads comme valeur.
  8. table : Représente une structure de type tableau.

De plus, Luau permet l'utilisation des enum pour définir une liste fixe d'éléments.

Annotations de type

Dans Luau, il n'est pas nécessaire de spécifier le type de donnée à chaque fois qu'on assigne une valeur à une variable. Cependant, il est parfois essentiel de le faire pour assurer le bon fonctionnement du programme. Pour annoter un type, on utilise le symbole : après le nom de la variable.

Exemple avec une variable :

local numerator: number = 18

Exemple avec une fonction :

function divide(numerator: number, denominator: number): number
    return numerator / denominator
end

Vérification des types

Luau fournit un système de vérification des types pour détecter des erreurs relatives aux types de données. Trois modes sont disponibles :

  • --!nocheck : Aucun contrôle n'est nécessaire.
  • --!nonstrict : Mode par défaut, qui vérifie le type de données sans signaler les erreurs directement.
  • --!strict : Utilisé pour indiquer les erreurs précises de vérification de type, en soulignant la ligne concernée.

Exemple de mode strict :

--!strict
local num: number
num = 8

Pour vérifier des types, on utilise la commande :

luau-analyze starts.luau

Si num a la valeur 8, aucune erreur n'est signalée. En revanche, si la valeur de num est changée en "8" (valeur de type chaîne), le retour sera :

TypeError: Type 'string' could not be converted into 'number'