Aide-mémoire Lua
Dernière mise à jour
Hello World et exécution du code
Lua est minimaliste - une seule instruction s'exécute.
| Opération | Syntaxe |
|---|---|
| Afficher une ligne | print("Hello, World!") |
| Afficher plusieurs valeurs | print("x", 1, true) |
| Écrire sans saut de ligne | io.write("Hi") |
| Commentaire | -- this is a comment |
| Commentaire multiligne | --[[ ... ]] |
| Concaténer des chaînes | print("Hi " .. name) |
| Exécuter un fichier | lua app.lua |
| Shell interactif | lua |
Variables et types
Les variables sont globales par défaut ; déclarez les locales avec local.
| Opération | Syntaxe |
|---|---|
| Variable locale | local age = 30 |
| Variable globale | count = 0 |
| Affectation multiple | local a, b = 1, 2 |
| Les huit types | nil, boolean, number, string, table, function, userdata, thread |
| Nil / booléens | nil, true, false |
| Vérifier le type | type(x) renvoie "number" |
| Convertir en nombre | tonumber("42") |
| Convertir en chaîne | tostring(42) |
Chaînes
Les chaînes sont immuables ; les guillemets simples et doubles fonctionnent tous deux.
| Opération | Syntaxe |
|---|---|
| Longueur | #s ou string.len(s) |
| Concaténer | s1 .. s2 |
| Majuscules / minuscules | s:upper(), s:lower() |
| Sous-chaîne | s:sub(1, 3) |
| Trouver une sous-chaîne | s:find("ell") |
| Remplacer (gsub) | s:gsub("a", "b") |
| Formater | string.format("%05d", 42) |
| Chaîne longue | [[ multi\nline ]] |
Tables (la structure de données centrale)
Les tables sont le seul type structuré de Lua - elles font office de tableaux, de maps et d'objets.
| Opération | Syntaxe |
|---|---|
| Table vide | local t = {} |
| Style tableau (commence à 1) | local t = {10, 20, 30} |
| Accéder à un élément de tableau | t[1] (premier élément) |
| Table de style map | local u = {name = "Ada", age = 30} |
| Accéder à une valeur de map | u.name ou u["name"] |
| Définir une valeur | t[4] = 40, u.email = "a@x.com" |
| Longueur de la partie tableau | #t |
| Itérer un tableau (ipairs) | for i, v in ipairs(t) do ... end |
| Itérer toutes les clés (pairs) | for k, v in pairs(u) do ... end |
| Table imbriquée | local m = {a = {1, 2}} |
Contrôle de flux
Les blocs se ferment avec end ; seuls nil et false sont faux.
| Opération | Syntaxe |
|---|---|
| If / elseif / else | if x > 0 then ... elseif x < 0 then ... else ... end |
| Opérateurs logiques | and, or, not |
| For numérique | for i = 1, 10 do ... end |
| For avec pas | for i = 10, 1, -1 do ... end |
| Boucle while | while x < 100 do ... end |
| Repeat-until | repeat ... until done |
| Break | break |
| Opérateur de non-égalité | if a ~= b then ... end |
Fonctions
Les fonctions sont des valeurs de première classe et peuvent renvoyer plusieurs résultats.
| Opération | Syntaxe |
|---|---|
| Définir une fonction | function add(a, b) return a + b end |
| Fonction locale | local function square(x) return x * x end |
| Fonction anonyme | local f = function(x) return x * 2 end |
| Valeurs de retour multiples | function bounds() return 1, 10 end |
| Capturer plusieurs retours | local lo, hi = bounds() |
| Fonction variadique | function sum(...) ... end |
| Collecter les varargs | local args = {...} |
| Méthode (syntaxe à deux-points) | function obj:greet() ... end |
Bibliothèque string
Fonctions courantes de la bibliothèque string (appelables sous la forme s:fn()).
| Fonction | Ce qu'elle fait |
|---|---|
string.len(s) | Longueur de la chaîne |
string.sub(s, i, j) | Sous-chaîne de l'indice i à j |
string.upper(s) | Copie en majuscules |
string.rep(s, n) | Répéter la chaîne n fois |
string.find(s, p) | Trouver un motif, renvoie début/fin |
string.match(s, p) | Renvoyer la première correspondance du motif |
string.gsub(s, p, r) | Remplacer toutes les correspondances du motif |
string.format(fmt, ...) | Formater des valeurs dans une chaîne |
Bibliothèques table et math
Utilitaires pour travailler avec les tables de style tableau et les nombres.
| Fonction | Ce qu'elle fait |
|---|---|
table.insert(t, v) | Ajouter une valeur à la fin |
table.insert(t, i, v) | Insérer v à la position i |
table.remove(t, i) | Retirer et renvoyer l'élément à l'indice i |
table.concat(t, ", ") | Joindre les éléments en une chaîne |
table.sort(t) | Trier le tableau sur place |
math.floor(x) / math.ceil(x) | Arrondir à l'inférieur / au supérieur |
math.max(...) / math.min(...) | Argument le plus grand / le plus petit |
math.random(1, 6) | Entier aléatoire dans une plage |
Métatables (en bref)
Les métatables vous permettent de personnaliser le comportement des tables - opérateurs, indexation, et plus encore.
| Opération | Syntaxe |
|---|---|
| Définir une métatable | setmetatable(t, mt) |
| Obtenir une métatable | getmetatable(t) |
| Repli pour les clés manquantes | mt.__index = defaults |
| Valeur par défaut via une fonction | mt.__index = function(t, k) ... end |
| Personnaliser l'addition | mt.__add = function(a, b) ... end |
| Personnaliser tostring | mt.__tostring = function(t) ... end |
| POO à base de prototypes | mt.__index = ClassTable |
La syntaxe Lua que vous utilisez le plus, sur une seule page. Cet aide-mémoire Lua est une référence rapide pour le cœur du langage - variables et types, chaînes, contrôle de flux, fonctions, ainsi que les tables qui servent de structure de données unique et flexible de Lua, plus un aperçu des bibliothèques standard et des métatables.
Tout ce qui figure ici est du Lua standard et s'exécute sur un interpréteur de base. Copiez ce dont vous avez besoin, ou essayez chaque extrait en direct dans le playground Lua - aucune installation requise.
FAQ de l'aide-mémoire Lua
Cet aide-mémoire Lua est-il gratuit ?
Comment une table Lua peut-elle être à la fois un tableau et une map ?
{10, 20, 30}), la table se comporte comme un tableau ; lorsque vous utilisez des clés de chaîne ({name = "Ada"}), elle se comporte comme une map. Vous pouvez même mélanger les deux dans la même table. C'est pourquoi Lua n'a besoin que d'un seul type structuré - la table couvre les tableaux, les dictionnaires, les ensembles et les objets.Pourquoi Lua utilise-t-il une indexation à partir de 1 ?
t[1] est le premier élément et #t est le nombre d'éléments. L'opérateur de longueur # et les fonctions de bibliothèque comme table.insert et ipairs supposent tous cette convention basée sur 1, donc s'y tenir maintient votre code de tableaux fonctionnel comme prévu.