Les fonctions sont très importantes car elles permettent de structurer et de simplifier le code. Voici un exemple simple :
1
2
3
4
5
6
7
8
|
function bonjour()
print("Bonjour")
end
bonjour()
-- output :
-- Bonjour
|
Passage de paramètres
1
2
3
4
5
6
7
8
|
function plus(a, b)
print(a + b)
end
plus(5, 5)
-- output :
-- 10
|
Valeur de retour
1
2
3
4
5
6
7
8
9
10
|
function plus(a, b)
return a + b
end
z = plus(5, 5)
print(z)
-- On aurait aussi pu écrire directement : print(plus(5, 5))
-- output :
-- 10
|
Plusieurs valeurs de retour
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
function vals()
return 3, 7
end
function main()
a, b = vals()
print(a)
print(b)
-- Si nous ne voulons pas utiliser la première valeur, on peut utiliser _
_, c = vals()
print(c)
end
main()
-- output :
-- 3
-- 7
-- 7
|
return
vs break
Lorsque nous avons vu le mot-clé break
, je vous avais dit qu’il existait une autre solution pour interrompre une boucle. La voici :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
-- Avec break
function maFunc()
for i = 0, 10 do
if i == 5 then
break
end
print(i)
end
print("Fin")
end
maFunc()
-- output :
-- 0
-- 1
-- 2
-- 3
-- 4
-- Fin
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
-- Avec return
function otherFunc()
for i = 0, 10 do
if i == 5 then
return
end
print(i)
end
print("Fin")
end
otherFunc()
-- output :
-- 0
-- 1
-- 2
-- 3
-- 4
|
Vous remarquerez que print("Fin")
n’est pas exécuté dans le second cas. Le mot-clé return
permet de quitter complètement la fonction, ce qui rappelle le comportement de break
, mais à l’échelle de la fonction.
Appels de fonctions imbriquées
Une fonction peut bien sûr appeler une autre fonction.
Appels alternatifs
Lua permet deux syntaxes particulières pour appeler une fonction :
1
2
3
4
5
6
7
8
9
10
11
12
|
local function test(str)
print(str)
end
test "5"
test{ "4" }
test{ "4", "5" }
-- output :
-- 5
-- table: 0x16aad60
-- table: 0x16abad0
|
Les deux derniers appels transmettent des tables en argument.