Introduction au Lua/Expressions
Un module de Lua Scribunto est une page de l'espace de nom "Module" qui utilise une table comme variable locale pour stocker ses fonctions et variables mais aussi pour renvoyer la réponse à la fin du processus. Une expression est formée de valeurs, variables et opérateurs ces derniers ont classés en trois catégories: arithmétique, relationnelle, logique. Cette leçon montre comment utiliser les expression dans un script[1].
Prérequis
modifierCette leçon suppose que vous ayez assimilé la leçon Variables.
Créer un script Lua avec des expressions
modifier- Rendez-vous sur le Module:Sandbox.
- Supprimer le code existant.
- Ajouter le code suivant et enregistrer la page
local p = {}
function p.arithmetic()
local a = 3
local b = 2
local result
result = ';Arithmetic\n'
result = result .. ':a is ' .. a .. '\n'
result = result .. ':b is ' .. b .. '\n'
result = result .. ':a + b is ' .. a + b .. '\n'
result = result .. ':a - b is ' .. a - b .. '\n'
result = result .. ':a * b is ' .. a * b .. '\n'
result = result .. ':a / b is ' .. a / b .. '\n'
result = result .. ':a % b is ' .. a % b .. '\n'
result = result .. ':a ^ b is ' .. a ^ b .. '\n'
result = result .. ':-a is ' .. -a .. '\n'
return result
end
function p.relational()
local a = 3
local b = 2
local result
result = ';Relational\n'
result = result .. ':a is ' .. a .. '\n'
result = result .. ':b is ' .. b .. '\n'
result = result .. ':a == b is ' .. tostring(a == b) .. '\n'
result = result .. ':a ~= b is ' .. tostring(a ~= b) .. '\n'
result = result .. ':a < b is ' .. tostring(a < b) .. '\n'
result = result .. ':a > b is ' .. tostring(a > b) .. '\n'
result = result .. ':a <= b is ' .. tostring(a <= b) .. '\n'
result = result .. ':a >= b is ' .. tostring(a >= b) .. '\n'
return result
end
function p.logical()
local a = 3
local b = 2
local result
result = ';Logical\n'
result = result .. ':a is ' .. a .. '\n'
result = result .. ':b is ' .. b .. '\n'
result = result .. ':a < b and b < a is ' .. tostring(a < b and b < a) .. '\n'
result = result .. ':a < b or b < a is ' .. tostring(a < b or b < a) .. '\n'
result = result .. ':a < b is ' .. tostring(a < b) .. '\n'
result = result .. ':not (a < b) is ' .. tostring(not (a < b)) .. '\n'
return result
end
function p.length()
local string = 'This is a string'
local result
result = ';Length\n'
result = result .. ':The length of "' .. string .. '" is ' .. #string
return result
end
return p
Tester votre script
modifier- Rendez-vous sur "votre page de test".
- Ajouter le code suivant et enregistrer la page
{{#invoke:Sandbox|arithmetic}} {{#invoke:Sandbox|relational}} {{#invoke:Sandbox|logical}} {{#invoke:Sandbox|length}}
Le résultat doit correspondre à ceci:
- Arithmetic
- a is 3
- b is 2
- a + b is 5
- a - b is 1
- a * b is 6
- a / b is 1.5
- a % b is 1
- a ^ b is 9
- -a is -3
- Relational
- a is 3
- b is 2
- a == b is false
- a ~= b is true
- a < b is false
- a > b is true
- a <= b is false
- a >= b is true
- Logical
- a is 3
- b is 2
- a < b and b < a is false
- a < b or b < a is true
- a < b is false
- not (a < b) is true
- Length
- The length of "This is a string" is 16
Comprendre le script
modifierlocal
Le code qui suit défini les variables a, b et result ; a et b sont initialisés ; result estnil
.3
et2
sont des valeurs littérales numériques.';Arithmetic\n'
est une chaine de caractères littérale, Lua accepte également le symbole " parfois appelé guillemet français ou double-guillemets comme délimiteur pour les chaines:";Arithmetic\n"
.\n
représente une nouvelle ligne. Le contenu qui suit apparaitra sur la ligne suivante dans votre page de test...
est l'opérateur permettant de concaténer (c-à-d joindre) deux chaines de caractères. Les valeurs numériques sont automatiquement converties en string lors de cette opération.+
,-
,*
, et/
sont les opérateurs respectifs d'addition, soustraction, multiplication et division.%
est appelé modulo il calcul le reste de la division euclidienne.^
opérateur exposant, élève à la puissance.-
précédé d'une variable est l'opérateur de négation-==
comparateur d’équivalence.~=
comparateur de non-équivalence (différence exacte).<
,>
,<=
, et>=
opérateurs de comparaison respectivement, inférieur, supérieur, inférieur ou égal, supérieur ou égal.tostring()
converti explicitement le contenu en chaine de caractère (string). Les comparateurs ne convertissent pas le type des valeurs.and
retourne false si l’opération de gauche est fausse, ou la valeur de droite si l’opération de gauche est vraie. ...- Cette approche gauche/droite est plus efficace, car l’opérateur logique
and
stop son évaluation dès que le résultat est faux.
- Cette approche gauche/droite est plus efficace, car l’opérateur logique
or
retourne vrai si l’opération de gauche est vraie, ou la valeur de droite si l'opération de gauche fausse...- Cette approche gauche/droite est plus efficace, car l’opérateur logique
or
stop son évaluation dès que le résultat est vrai.
- Cette approche gauche/droite est plus efficace, car l’opérateur logique
not
retourne l'opposé vrai/faux de ce qui suit...#
retourne la longueur de la variable qui suit.
Conclusion
modifierFélicitation vous êtes capable de créer, tester et comprendre un script Lua avec des expressions. Continuez avec la leçon Conditions.
Voir aussi
modifierRéférences
modifier