Introduction au Lua/Fonctions
Apparence
…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
[modifier | modifier le wikicode]Cette leçon suppose que vous ayez assimilé la leçon Boucles.
Créer un script Lua avec des fonctions
[modifier | modifier le wikicode]- Accéder au Module:Sandbox.
- Supprimer le code existant.
- 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
[modifier | modifier le wikicode]- Rendez-vous sur "votre page de test".
- 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
[modifier | modifier le wikicode]local function toCelsius(f)
déclare une fonction locale nomméetoCelsius
qui accepte un seul paramètref
, 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.
- Le fait de déclare la fonction comme
return (f - 32) * 5 / 9
convertit la température Fahrenheit en Celsius et retourne le résultat.end
termine la fonction.
Comprendre la fonction toFahrenheit
[modifier | modifier le wikicode]local function toFahrenheit(c)
déclare une fonction locale nomméetoFahrenheit
qui accepte un seul paramètrec
, 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.
- Le fait de déclare la fonction comme
return c * 9 / 5 + 32
convertit la température Celsius en Fahrenheit et retourne le résultat.end
termine la fonction.
Comprendre la fonction functions
[modifier | modifier le wikicode]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.
- Ici nous n'utilisons pas le code
local
et le code qui suit définit les variablestemperature
etresult
. Les deux sontnil
.result = ';Fahrenheit to Celsius\n'
assigne une chaine de caractère littérale comme valeur à la variableresult
.for temperature = 0, 100, 10 do
créé un bloc de code pour la boucle qui va incrémenter la variabletemperature
de0
à100
par séquence de10
.toCelsius(temperature)
appel la fonctiontoCelsius
et lui passe la valeur courante de la variabletemperature
comme température à convertir.string.format()
appel la fonctionformat
de la librairiestring
pour formater la valeur retournée en Celcius.'%.1f'
indique le format (%) désiré, on affichera une seule décimale (.1) après la virgule flotante (f).toFahrenheit(temperature)
appel la fonctiontoFahrenheit
et lui passe la valeur courante de la variabletemperature
comme température à convertir.string.format()
appel la fonctionformat
de la librairiestring
pour formater la température retournée en Fahrenheit.'%.1f'
indique le format (%) désiré, on affichera une seule décimale (.1) après la virgule flotante (f).return result
retourne la valeur courante de la variableresult
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
[modifier | modifier le wikicode]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
[modifier | modifier le wikicode]Références
[modifier | modifier le wikicode]