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éetoCelsiusqui accepte un seul paramètref, la température en Farenheit à convertir.- Le fait de déclare la fonction comme
localgarantit qu'elle ne puisse être appelée en dehors du module.
- Le fait de déclare la fonction comme
return (f - 32) * 5 / 9convertit la température Fahrenheit en Celsius et retourne le résultat.endtermine la fonction.
Comprendre la fonction toFahrenheit
[modifier | modifier le wikicode]local function toFahrenheit(c)déclare une fonction locale nomméetoFahrenheitqui accepte un seul paramètrec, la température en Celcius à convertir.- Le fait de déclare la fonction comme
localgarantit qu'elle ne puisse être appelée en dehors du module.
- Le fait de déclare la fonction comme
return c * 9 / 5 + 32convertit la température Celsius en Fahrenheit et retourne le résultat.endtermine 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
localet le code qui suit définit les variablestemperatureetresult. 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 docréé un bloc de code pour la boucle qui va incrémenter la variabletemperaturede0à100par séquence de10.toCelsius(temperature)appel la fonctiontoCelsiuset lui passe la valeur courante de la variabletemperaturecomme température à convertir.string.format()appel la fonctionformatde la librairiestringpour 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 fonctiontoFahrenheitet lui passe la valeur courante de la variabletemperaturecomme température à convertir.string.format()appel la fonctionformatde la librairiestringpour 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 resultretourne la valeur courante de la variableresultcomme 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]

