Lua

Page d'aide sur l'homonymie Pour les articles homonymes, voir Lua (homonymie).
Lua
Logo.

Date de première version1993
ParadigmeMulti-paradigme : procédural, orienté objet à prototype et fonctionnel
AuteurLuiz Henrique de Figueiredo, Roberto Ierusalimschy et Waldemar Celes
Dernière version5.3.4 ()[1]Voir et modifier les données sur Wikidata
Typagedynamique, faible
Influencé parBASIC, C, C++
A influencéMicro Lua DS
ImplémentationsLua, LuaJIT, LLVM-Lua, LuaCLR, Nua, Lua Alchemy, MicroLua, Mochalua, Jill, luaj
Écrit enCVoir et modifier les données sur Wikidata
Système d'exploitationMultiplate-forme
LicenceLicence MIT
Site weblua.org
Extension de fichierluaVoir et modifier les données sur Wikidata

Lua est un langage de script libre, réflexif et impératif.

Créé en 1993, il est conçu de manière à pouvoir être embarqué au sein d'autres applications afin d'étendre celles-ci. Lua (du portugais : Lua [ˈlu.ɐ], au Brésil : [ˈlu.a], signifiant « Lune »[2]) a été développé par Luiz Henrique de Figueiredo, Roberto Ierusalimschy (en) et Waldemar Celes, membres du groupe de recherche TeCGraf, de l'université pontificale catholique de Rio de Janeiro au Brésil.

L'interpréteur Lua est écrit en langage C ANSI strict, et de ce fait est compilable sur une grande variété de systèmes. Il est également très compact, la version 5.0.2 n'occupant que 95 ko à 185 ko selon le compilateur utilisé et le système cible. Il est souvent utilisé dans des systèmes embarqués tels qu'OpenWrt[3] où cette compacité est très appréciée. Il profite de la compatibilité que possède le langage C avec un grand nombre de langages pour s'intégrer facilement dans la plupart des projets.

Il est particulièrement apprécié pour le développement de jeux vidéo.

Le Lua est utilisé dans des jeux vidéo comme : World Of Warcraft (addons), roblox, garrysmod, computercraft mod.

Généralités

Commentaires

En Lua, les commentaires débutent par -- et finissent à la fin de la ligne, comme en Ada. Si la première ligne commence par #! (shebang) elle est aussi traitée comme un commentaire. Les commentaires multilignes sont également disponibles avec la syntaxe

--[[...]]

Variables

Les variables peuvent contenir nil (la valeur nulle, vide), un booléen, une chaîne de caractères, un nombre, une table ou une fonction. Il existe aussi d'autres types comme userdata ou thread moins souvent rencontrés. Le type userdata est très pratique, il correspond à un objet C/C++ défini par l'utilisateur : il est donc possible de créer une structure C ou une classe C++, et d'utiliser des objets de ce type dans un script Lua, après avoir attaché à cet objet une métatable qui se charge d'appeler les fonctions de la classe C++. On peut donc imaginer de créer les classes métier de base d'un programme en C, et coder l'application elle-même en Lua, ce qui accélère considérablement son développement grâce aux outils de haut niveau fournis par le langage.

Par défaut, lorsqu'on déclare une variable, elle est globale à tout l'environnement d'exécution, sauf si elle est précédée du mot-clef local.

Les chaînes de caractères sont délimitées par des guillemets simples (') ou doubles ("), voire la marque de chaîne littérale

 [[...]]

(multiligne, pas de caractère spécial).

L'opérateur de concaténation de chaînes se représente par deux points (..).

Les fonctions

Les fonctions sont considérées comme des variables. Cela apporte une grande flexibilité : il est par exemple possible de créer des fonctions locales à une autre fonction, de passer une fonction comme paramètre d'une autre fonction (ou comme valeur de retour) ou de mettre des fonctions dans des tables. Si on affecte nil à une fonction (eg. print = nil), la fonction n'existe plus, n'est plus appelable.

Un avantage des fonctions en Lua est qu'elles peuvent prendre un nombre indéfini de paramètres mais aussi qu'elles peuvent retourner plusieurs valeurs.

Les tables, métatables

Les tables sont une structure Lua qui permet de stocker des variables indexées par une clef (comme en PHP par exemple). Les tables servent à beaucoup de choses en Lua. C'est par exemple la structure utilisée pour représenter des pseudo-classes et objets.

Les métatables sont des tables pour lesquelles on a associé une fonction à chaque opérateur de base (+, -, (), []...). Ce mécanisme est très proche de la redéfinition des opérateurs en C++. Par exemple, si la variable x contient une table associée à une métatable appropriée, l'appel de fonction x(arguments) sera valide car Lua cherchera alors dans la métatable comment traiter cet appel.

C'est ainsi qu'on peut implémenter l'héritage entre tables. Si un champ n'est pas trouvé lorsqu'il est demandé, Lua cherchera dans la métatable quelle table est parente et demandera à la table parente de fournir l'élément approprié.

Other Languages
azərbaycanca: Lua
català: Lua
čeština: Lua
Deutsch: Lua
Zazaki: Lua
Ελληνικά: Lua
Esperanto: Lua
español: Lua
eesti: Lua
suomi: Lua
Bahasa Indonesia: Lua (bahasa pemrograman)
italiano: Lua
日本語: Lua
ქართული: ლუა
ភាសាខ្មែរ: ភាសាកម្មវិធី Lua
latviešu: Lua
Bahasa Melayu: Lua
norsk: Lua
polski: Lua
русский: Lua
Simple English: Lua
slovenščina: Lua (programski jezik)
српски / srpski: Lua
svenska: Lua
தமிழ்: லூவா
тоҷикӣ: Lua
українська: Lua
Tiếng Việt: Lua
中文: Lua
Bân-lâm-gú: Lua