注册 | 登录 [划词翻译关闭]
翻译软件 logo
 《每日法语听力》全新发布 - 法语学习必备的听力软件
  赞助商链接

人大中法国际时尚管理硕士
巴黎一流商学院IESEG管理学院与中国人民大学精心打造的管理硕士项目,培养时尚管理精英人才,为世界时尚领域输送最新锐的专业人士!
www.fashion-ieseg.com

人大中法国际金融财务硕士
中国人民大学-法国马赛高等商学院合作办学,培养中国最具有成长力的财务金融硕士,打造国际金融精英。
www.sfep.org.cn

25 所法国高校与您相约
北京,武汉,成都,西安,上海3月9日至17日。希望赴法攻读硕士或博士学位?希望与法国知名高校进行一对一面谈? 赶快报名!
www.chine.campusfrance.org/zh-hans

战斗在法国
欧洲最具活力的中文社区.最大的关于法国的中文网络平台
www.revefrance.com

法国学校联盟 -- 最专业的留法机构
行业首创,全程公开进度查询;官方学校招生代表;专属面签辅导;巴黎专属办事处;全海归团队;高签证率缔造者
www.edufrance.org.cn

咪咪学法语
法语爱好者的家园 留学与考试的助手 提供各种法语相关的信息与服务
www.mimifr.com

法语沙龙
四川师范大学法语系专业所创办公益性的法语学习网站,为法语爱好者提供法语学习交流的网上空间
www.monfr.com

关闭侧边栏
Lua
Lua est un langage de script libre créé en 1991 dont l'interpréteur est conçu dans un but de compacité (95 à 185 Ko pour la version 5.0.2, selon le compilateur utilisé et le système cible). Lua est conçu de manière à pouvoir être embarqué au sein d'une autre application, ce qui permet d'étendre celle-ci. Lua (qui signifie Lune en Portugais) a été développé par Luiz Henrique de Figueiredo, Roberto Ierusalimschy et Waldemar Celes, membres du groupe de recherche TeCGraf, de l'Université de Rio de Janeiro au Brésil.

Lua est écrit en langage C ANSI strict, et de ce fait est compilable sur une grande variété de systèmes. Il est souvent utilisé dans des systèmes embarqués où sa compacité est très appréciée. Il profite de la compatibilité que possède le 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éos comme pour l'interface du célèbre jeu World of Warcraft de Blizzard Entertainment ou encore Far Cry de Crytek Studios, SimCity 4 et prochainement dans Natural Selection 2 de Unknown Worlds Entertainment qui a entre autre développé Decoda, un IDE pour Lua. Lua a été porté dernièrement sur la console portable de Sony, la PSP. Une version Playstation 2 est en cours de portage. Ce langage est également utilisé pour la programmation de jeux de Nintendo DS.

Généralités

Commentaires

En Lua, les commentaires débutent par et finissent à la fin de la ligne. Si la première ligne commence par #! (shebang) elle est aussi traitée comme un commentaire. On peut faire des commentaires multilignes avec la syntaxe <source lang="lua">--...</source>

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 (pas de recompilation en cas d'erreur de programmation...).

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 litérale <source lang="lua">...</source> (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 surtout elles peuvent retourner plusieurs valeurs.

Les tables, métatables

Les tables sont une structure Lua qui permettent de stocker des variables indexées par une clef (comme en 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é.

Exemples

Condition

<source lang="lua"> if condition1 then

-- instructions executées si la condition 1 est vraie
elseif condition2 then

-- instructions executées si la condition 2 est vraie et la condition 1 est fausse
else

-- instructions executées si les deux conditions sont fausses
end </source>

Boucles

<source lang="lua"> repeat

-- code
until condition </source> et <source lang="lua"> while condition do

-- code
end </source> ainsi que <source lang="lua"> for var = start, end, step do

-- code
end </source> ou <source lang="lua"> for var_1, ..., var_n in explist do

-- code
end </source>

Déclaration de fonctions

<source lang="lua"> function mafonction(arg1, arg2, ...)

-- code
return résultat1, résultat2
end </source> -- ou -- <source lang="lua"> mafonction = function (arg1, arg2, ...)

-- code
return résultat1, résultat2
end </source>

Appels de fonction

<source lang="lua"> res1, res2 = mafonction(var) </source>

Blocs inconditionnels

Les blocs inconditionnels servent par exemple à déclarer des variables locales à ce bloc : <source lang="lua"> do

local mavariable = "chaîne" -- déclaration de variable, optionnel
-- code utilisant mavariable
end </source>

Déclaration de table

Table à indices numériques croissant (premier indice : 1) <source lang="lua">a = { 5, "foo", C:\\Lua\\Lua.exe, 'bar', 42 } </source> Table à indices textuels -- les clés ayant la syntaxe d'une variable n'ont pas besoin d'être entre quotes <source lang="lua">a = { d = 5, s = "foo", ['chaîne avec espace'] = true } </source> Table stockant des variables complexes : autres tables, fonctions, références croisées... <source lang="lua"> fonction = function (a, b) return (a + b) / a * b end t = { b = { -- Fonction comme clé [fonction] = 'Fonction !', -- Index numérique [5] = 42, -- Index chaîne simple (ie. syntaxe d'une variable) ls = Valeur Multiligne, -- Index chaîne quelconque [Expression rationnelle] = , [ C:\\Lua\\Lua.exe ] = true, }, -- Stockage d'une fonction f = function () return math.random(100) end, ff = fonction, -- Table comme clé [ { 'a', 'b' } ] = { "aa", "bb" }, } -- Référence dans la table t.reference = t.a t[ { t.a, t.b } ] = t.f </source>

Liens externes


(搜索用时0.006秒)

法语助手 2010  -  手机版网页 -  广告联系 -  意见反馈 -  关于法语在线词典 -  合作伙伴 -  Dictionnaire Chinois