Comment utiliser le compilateur Lua en ligne
- Écrivez ou collez un script Lua dans l'éditeur. Réinitialiser l'exemple restaure le code de départ.
- Appuyez sur Exécuter ou utilisez Ctrl + Entrée (⌘ + Entrée sur un Mac).
- Tout ce que vous passez à
print()apparaît dans le panneau Sortie. Comme dans l'interpréteur standard, plusieurs arguments sont séparés par des tabulations, etnilest affichénil. Les erreurs d'exécution et de syntaxe sont surlignées avec le numéro de ligne. - Choisissez une limite de temps de 5, 15 ou 60 secondes. Un script qui tourne trop longtemps est arrêté automatiquement, et Arrêter l'interrompt immédiatement.
L'environnement d'exécution Lua est petit, bien en dessous de 1 Mo, si bien que la page est prête à exécuter presque instantanément. Utilisez Copier ou main.lua pour enregistrer votre script.
Votre script s'exécute dans un Web Worker à l'intérieur de votre navigateur. Il n'est jamais envoyé et n'est pas stocké sur nos serveurs. L'éditeur mémorise votre dernier code dans le stockage local de votre navigateur, et nulle part ailleurs.
Ce qui est pris en charge
Le compilateur exécute Lua 5.4 via wasmoon, une version WebAssembly de l'interpréteur Lua de référence écrit en C. Votre code est exécuté par le vrai Lua, et non par une traduction en JavaScript.
- Le langage Lua 5.4 : sous-types entier et flottant, division entière (
//), opérateurs bit à bit,goto, et les attributs locaux<const>et<close>. - Bibliothèques standard :
string(y compris les motifs Lua etstring.format),table,math,utf8etcoroutine. - Fermetures, métatables et coroutines, pour vous exercer à la programmation orientée objet et au style générateur en Lua.
Limitations :
- Utilisez
print()pour la sortie. La sortie est capturée depuisprint: utilisez-le plutôt queio.write. - Pas d'entrée standard, d'accès réseau ni de vrais fichiers. Placez vos données de test directement dans le script.
- Pas de modules C ni de LuaRocks. Seul le code Lua pur de l'éditeur peut s'exécuter.
- Chaque exécution reçoit un état Lua neuf : les variables globales de l'exécution précédente sont donc effacées.
Aide-mémoire Lua
local Account = {}
Account.__index = Account
function Account.new(owner, balance)
return setmetatable({ owner = owner, balance = balance or 0 }, Account)
end
function Account:deposit(v)
self.balance = self.balance + v
end
local acc = Account.new("Ada")
acc:deposit(50)
print(acc.owner, acc.balance) --> Ada 50
for word in ("one two three"):gmatch("%a+") do
print(#word, word:upper())
end
print(7 // 2, 7 / 2) --> 3 3.5
| Tâche | Syntaxe |
|---|---|
| Variable locale | local x = 10 |
| Concaténer des chaînes | "a" .. "b" |
| Longueur d'une chaîne ou d'une liste | #t |
| Différent de | a ~= b |
| Boucle numérique | for i = 1, 10, 2 do ... end |
| Parcourir une liste / une table | for i, v in ipairs(t) / for k, v in pairs(t) |
| Formater un nombre | string.format("%.2f", n) |
Conseils
- Les tableaux Lua commencent à l'indice 1, pas 0, et
#n'est fiable que pour les séquences sans « trous »nil. - Déclarez vos variables avec
local. Sans cela, une variable est globale, ce qui est plus lent et une source fréquente de bogues. - Seuls
niletfalsesont faux.0et la chaîne vide sont vrais en Lua. - Les motifs Lua ressemblent à des expressions régulières mais sont plus simples, et utilisent
%au lieu d'une barre oblique inverse, comme dans%d+. Pour de vraies expressions régulières dans d'autres langages, essayez le Testeur de regex.
pairs, ou utilisez table.concat(list, ", ") pour une liste de chaînes et de nombres. Passer la table elle-même à print(t) n'en affiche pas le contenu.Questions fréquentes
Quelle version de Lua est utilisée ?
Lua 5.4. Exécutez print(_VERSION) pour le confirmer. Le code écrit pour Lua 5.3 fonctionne presque toujours sans modification, tandis que le code Lua 5.1 ou LuaJIT peut nécessiter de petits changements, par exemple remplacer unpack par table.unpack.
Puis-je tester des scripts Roblox ou LÖVE ici ?
Vous pouvez tester de la logique Lua pure, comme les fonctions, les tables, la manipulation de chaînes et les calculs. Les API de moteurs comme les services Roblox (Roblox utilise son propre dialecte, Luau) ou les fonctions love.* de LÖVE n'existent pas ici.
Pourquoi io.read ne fonctionne-t-il pas ?
Le compilateur n'a pas d'entrée standard interactive. Définissez vos valeurs de test sous forme de variables en haut du script.
Quels autres langages puis-je exécuter en ligne ?
Le Compilateur Python en ligne et le Compilateur Ruby en ligne s'exécutent eux aussi entièrement dans votre navigateur.
Mis à jour