< Introduction au Lua
fin de la boite de navigation du chapitre


…Contexte de la leçon[1]… Les fonctions sont des structures de code qui servent à encapsuler une série d'instructions de manière à pouvoir les appeler aussi souvent que nécessaire. Cette leçon montre comment utiliser des fonctions dans un script.

Prérequis

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

Créer un script Lua avec des fonctions

  1. Accéder au Module:Sandbox.
  2. Supprimer le code existant.
  3. Ajouter le code suivant et enregistrer la page:
local p = {}

local function toCelsius(f)
    return (f - 32) * 5 / 9
end

local function toFahrenheit(c)
    return c * 9 / 5 + 32
end

function p.functions()
    local temperature
    local result
	
    result = ';Fahrenheit to Celsius\n'
    for temperature = 0, 100, 10 do
        result = result .. ':' .. temperature .. ' °F is ' .. string.format('%.1f', toCelsius(temperature)) .. ' °C\n'
    end
 
    result = result .. ';Celsius to Fahrenheit\n'
    for temperature = 0, 100, 10 do
        result = result .. ':' .. temperature .. ' °C is ' .. string.format('%.1f', toFahrenheit(temperature)) .. ' °F\n'
    end
    return result
end

return p

Tester votre nouveau script

  1. Rendez-vous sur "votre page de test".
  2. Ajouter le code suivant et enregistrer la page:
 {{#invoke:Sandbox|functions}}

Le résultat doit correspondre à ceci:

Fahrenheit to Celsius
0 °F is -17.8 °C
10 °F is -12.2 °C
20 °F is -6.7 °C
30 °F is -1.1 °C
40 °F is 4.4 °C
50 °F is 10.0 °C
60 °F is 15.6 °C
70 °F is 21.1 °C
80 °F is 26.7 °C
90 °F is 32.2 °C
100 °F is 37.8 °C
Celsius to Fahrenheit
0 °C is 32.0 °F
10 °C is 50.0 °F
20 °C is 68.0 °F
30 °C is 86.0 °F
40 °C is 104.0 °F
50 °C is 122.0 °F
60 °C is 140.0 °F
70 °C is 158.0 °F
80 °C is 176.0 °F
90 °C is 194.0 °F
100 °C is 212.0 °F

Comprendre le nouveau script

  1. local function toCelsius(f) déclare une fonction locale nommée toCelsius qui accepte un seul paramètre f, la température en Farenheit à convertir.
    Le fait de déclare la fonction comme local garantit qu'elle ne puisse être appelée en dehors du module.
  2. return (f - 32) * 5 / 9 convertit la température Fahrenheit en Celsius et retourne le résultat.
  3. end termine la fonction.

Comprendre la fonction toFahrenheit

  1. local function toFahrenheit(c) déclare une fonction locale nommée toFahrenheit qui accepte un seul paramètre c, la température en Celcius à convertir.
    Le fait de déclare la fonction comme local garantit qu'elle ne puisse être appelée en dehors du module.
  2. return c * 9 / 5 + 32 convertit la température Celsius en Fahrenheit et retourne le résultat.
  3. end termine la fonction.

Comprendre la fonction functions

  1. function p.functions() déclare une fonction nommé functions.
    Ici nous n'utilisons pas le code local, ce qui la rend accessible depuis l’extérieur du module.
  2. local et le code qui suit définit les variables temperature et result. Les deux sont nil.
  3. result = ';Fahrenheit to Celsius\n' assigne une chaine de caractère littérale comme valeur à la variable result.
  4. for temperature = 0, 100, 10 do créé un bloc de code pour la boucle qui va incrémenter la variable temperature de 0 à 100 par séquence de 10.
  5. toCelsius(temperature) appel la fonction toCelsius et lui passe la valeur courante de la variable temperature comme température à convertir.
  6. string.format() appel la fonction format de la librairie string pour formater la valeur retournée en Celcius.
  7. '%.1f' indique le format (%) désiré, on affichera une seule décimale (.1) après la virgule flotante (f).
  8. toFahrenheit(temperature) appel la fonction toFahrenheit et lui passe la valeur courante de la variable temperature comme température à convertir.
  9. string.format() appel la fonction format de la librairie string pour formater la température retournée en Fahrenheit.
  10. '%.1f' indique le format (%) désiré, on affichera une seule décimale (.1) après la virgule flotante (f).
  11. return result retourne la valeur courante de la variable result comme résultat de la fonction.

Notez que le script utilise trois types de fonctions différents.

  • fonction à portée locale (toCelsius, toFahrenheit)
  • fonction à portée globale (functions)
  • fonction appartenant à une librairie (string.format).

Conclusion

Félicitation! Vous êtes capable de créer, tester et comprendre un script Lua qui contient des fonctions. Continuez avec la leçon Tables.

Voir aussi

Références

Lua for Wikiversity (en)

Cet article est issu de Wikiversity. Le texte est sous licence Creative Commons - Attribution - Partage dans les Mêmes. Des conditions supplémentaires peuvent s'appliquer aux fichiers multimédias.