Types de données en Lua

Introduction aux types de données

Dans Lua, tout comme dans d'autres langages comme Python ou Ruby, nous faisons face à un langage à typage dynamique. Ce qui signifie que vous n'avez pas besoin de déclarer explicitement le type de données d'une variable. Vous pouvez simplement assigner une valeur et Lua en déduira automatiquement le type adéquat.

Les huit types de données de base

Lua dispose de huit types de données fondamentaux : - boolean - function - nil - number - string - table - thread - userdata

Voici quelques exemples illustrant les types les plus fréquemment utilisés :

-- Un boolean
flag = false

-- Une chaîne de caractères
name = "John Doe"

-- Un nombre. Il n'existe pas de type entier en Lua.
num = 13

-- Une fonction
function foo() return "bar" end

Utiliser la fonction type()

Une fonction intégrée pratique dans Lua est type(), qui vous permet de déterminer le type d'une donnée. Par exemple :

location = 'Maple Road'
print(type(location)) -- Cela affichera "string"
print(type(12/3)) -- Cela affichera "number"

Conversion de types

Dans Lua, la conversion de types s'effectue automatiquement lors de certaines opérations, comme la concaténation de chaînes de caractères et de nombres, ou lorsque des chaînes de caractères contenant des valeurs numériques se retrouvent dans des expressions arithmétiques.

Voici quelques exemples :

-- La conversion se produit lors de la concaténation.
temperature = 56
print('Aujourd’hui, la température est de ' .. temperature .. ' degrés.') -- Affiche "Aujourd’hui, la température est de 56 degrés."

-- La conversion dans les expressions arithmétiques.
print('53' + 7) -- Cela affichera 60 car "53" a été converti en nombre.

Pour une conversion manuelle vers une chaîne, vous pouvez utiliser la fonction tostring().

player1Pts = 55
print('Le joueur 1 a ' .. tostring(player1Pts) .. ' points') -- Affiche "Le joueur 1 a 55 points"

Pour convertir un type de données en nombre, vous pouvez utiliser tonumber().

totalGuests = '30'
print(tonumber(totalGuests) / 5) -- Affiche 6