Menu
Coddy logo textTech

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érationSyntaxe
Afficher une ligneprint("Hello, World!")
Afficher plusieurs valeursprint("x", 1, true)
Écrire sans saut de ligneio.write("Hi")
Commentaire-- this is a comment
Commentaire multiligne--[[ ... ]]
Concaténer des chaînesprint("Hi " .. name)
Exécuter un fichierlua app.lua
Shell interactiflua

Variables et types

Les variables sont globales par défaut ; déclarez les locales avec local.

OpérationSyntaxe
Variable localelocal age = 30
Variable globalecount = 0
Affectation multiplelocal a, b = 1, 2
Les huit typesnil, boolean, number, string, table, function, userdata, thread
Nil / booléensnil, true, false
Vérifier le typetype(x) renvoie "number"
Convertir en nombretonumber("42")
Convertir en chaînetostring(42)

Chaînes

Les chaînes sont immuables ; les guillemets simples et doubles fonctionnent tous deux.

OpérationSyntaxe
Longueur#s ou string.len(s)
Concaténers1 .. s2
Majuscules / minusculess:upper(), s:lower()
Sous-chaînes:sub(1, 3)
Trouver une sous-chaînes:find("ell")
Remplacer (gsub)s:gsub("a", "b")
Formaterstring.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érationSyntaxe
Table videlocal t = {}
Style tableau (commence à 1)local t = {10, 20, 30}
Accéder à un élément de tableaut[1] (premier élément)
Table de style maplocal u = {name = "Ada", age = 30}
Accéder à une valeur de mapu.name ou u["name"]
Définir une valeurt[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éelocal m = {a = {1, 2}}

Contrôle de flux

Les blocs se ferment avec end ; seuls nil et false sont faux.

OpérationSyntaxe
If / elseif / elseif x > 0 then ... elseif x < 0 then ... else ... end
Opérateurs logiquesand, or, not
For numériquefor i = 1, 10 do ... end
For avec pasfor i = 10, 1, -1 do ... end
Boucle whilewhile x < 100 do ... end
Repeat-untilrepeat ... until done
Breakbreak
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érationSyntaxe
Définir une fonctionfunction add(a, b) return a + b end
Fonction localelocal function square(x) return x * x end
Fonction anonymelocal f = function(x) return x * 2 end
Valeurs de retour multiplesfunction bounds() return 1, 10 end
Capturer plusieurs retourslocal lo, hi = bounds()
Fonction variadiquefunction sum(...) ... end
Collecter les varargslocal 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()).

FonctionCe 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.

FonctionCe 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érationSyntaxe
Définir une métatablesetmetatable(t, mt)
Obtenir une métatablegetmetatable(t)
Repli pour les clés manquantesmt.__index = defaults
Valeur par défaut via une fonctionmt.__index = function(t, k) ... end
Personnaliser l'additionmt.__add = function(a, b) ... end
Personnaliser tostringmt.__tostring = function(t) ... end
POO à base de prototypesmt.__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 ?
Oui. Cet aide-mémoire Lua est entièrement gratuit, sans inscription. Mettez-le en favori et revenez dès que vous devez retrouver une opération sur une table, une fonction de chaîne ou un mot-clé de contrôle de flux.
Comment une table Lua peut-elle être à la fois un tableau et une map ?
Une table n'est qu'un ensemble de paires clé-valeur, et la clé peut être n'importe quelle valeur. Lorsque vous utilisez des clés entières consécutives commençant à 1 ({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 ?
Par convention et par conception, les tableaux Lua commencent à l'indice 1, pas 0 - donc 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.
Puis-je m'entraîner à Lua en ligne ?
Oui. Ouvrez le playground Lua pour exécuter n'importe quel extrait de cet aide-mémoire dans votre navigateur - aucune installation de Lua nécessaire. Quand vous voulez de la structure, le cours Lua interactif gratuit de Coddy vous emmène des variables et des tables jusqu'aux fonctions et aux métatables, étape par étape.
Cet aide-mémoire convient-il aux débutants ?
Oui. Il est organisé des sujets les plus courants (variables, chaînes, tables, contrôle de flux) jusqu'aux plus avancés (les bibliothèques standard et les métatables), pour que vous puissiez utiliser les premières sections dès le premier jour et progresser vers le reste.
Coddy programming languages illustration

Apprenez Lua avec Coddy

COMMENCER