Leçons de niveau 12

Introduction au Lua/Expressions

Une page de Wikiversité.
Sauter à la navigation Sauter à la recherche
Début de la boite de navigation du chapitre
Expressions
Icône de la faculté
Chapitre no 6
Leçon : Introduction au Lua
Chap. préc. :Variables
Chap. suiv. :Conditions
fin de la boite de navigation du chapitre
Icon falscher Titel.svg
En raison de limitations techniques, la typographie souhaitable du titre, « Introduction au Lua : Expressions
Introduction au Lua/Expressions
 », n'a pu être restituée correctement ci-dessus.


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[modifier | modifier le wikicode]

Cette leçon suppose que vous ayez assimilé la leçon Variables.

Créer un script Lua avec des expressions[modifier | modifier le wikicode]

  1. Rendez-vous sur le Module:Sandbox.
  2. Supprimer le code existant.
  3. 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 | modifier le wikicode]

  1. Rendez-vous sur "votre page de test".
  2. 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[modifier | modifier le wikicode]

  1. local Le code qui suit défini les variables a, b et result ; a et b sont initialisés ; result est nil.
  1. 3 et 2 sont des valeurs littérales numériques.
  2. ';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".
  3. \n représente une nouvelle ligne. Le contenu qui suit apparaitra sur la ligne suivante dans votre page de test.
  4. .. 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.
  5. +, -, *, et / sont les opérateurs respectifs d'addition, soustraction, multiplication et division.
  6. % est appelé modulo il calcul le reste de la division euclidienne.
  7. ^ opérateur exposant, élève à la puissance.
  8. - précédé d'une variable est l'opérateur de négation-
  9. == comparateur d’équivalence.
  10. ~= comparateur de non-équivalence (différence exacte).
  11. <, >, <=, et >= opérateurs de comparaison respectivement, inférieur, supérieur, inférieur ou égal, supérieur ou égal.
  12. tostring() converti explicitement le contenu en chaine de caractère (string). Les comparateurs ne convertissent pas le type des valeurs.
  13. 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.
  14. 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.
  15. not retourne l'opposé vrai/faux de ce qui suit...
  16. # retourne la longueur de la variable qui suit.

Conclusion[modifier | modifier le wikicode]

Félicitation vous êtes capable de créer, tester et comprendre un script Lua avec des expressions. Continuez avec la leçon Conditions.

Voir aussi[modifier | modifier le wikicode]

Références[modifier | modifier le wikicode]

Lua for Wikiversity (en)