Fonctions Lua
En Lua, les fonctions sont la principale méthode pour abstraire des instructions et des expressions. Elles peuvent être utilisées à la fois pour traiter des tâches spécifiques et pour calculer des valeurs.
Lua fournit de nombreuses fonctions intégrées que vous pouvez appeler facilement dans vos programmes. Par exemple, la fonction print() affiche les paramètres passés dans la console.
Les fonctions Lua ont principalement deux utilisations :
- 1. Accomplir des tâches spécifiées ; dans ce cas, la fonction est utilisée comme une instruction d'appel ;
- 2. Calculer et renvoyer des valeurs ; dans ce cas, la fonction est utilisée comme une expression dans une instruction d'affectation.
Définition de fonction
Le format de définition de fonction dans le langage de programmation Lua est le suivant :
optional_function_scope function function_name( argument1, argument2, argument3..., argumentn) function_body return result_params_comma_separated end
Explication :
optional_function_scope:Ce paramètre est facultatif et spécifie si la fonction est globale ou locale. Si ce paramètre n'est pas défini, la fonction est globale par défaut. Si vous devez définir la fonction comme une fonction locale, utilisez le mot-clélocal。
function_name: Spécifiez le nom de la fonction.
argument1, argument2, argument3..., argumentn: Paramètres de la fonction ; plusieurs paramètres sont séparés par des virgules. La fonction peut également ne pas avoir de paramètres.
function_body: Corps de la fonction : le bloc d'instructions de code qui doivent être exécutées dans la fonction.
result_params_comma_separated: Valeurs de retour de la fonction. Les fonctions Lua peuvent renvoyer plusieurs valeurs, chacune séparée par des virgules.
Exemple
L'exemple suivant définit la fonctionmax(), avec les paramètres num1, num2, utilisés pour comparer les deux valeurs et renvoyer la valeur maximale :
Exemple
function max(num1, num2)
if (num1 > num2) then
result = num1;
else
result = num2;
end
return result;
end
-- Appeler la fonction
print("Le maximum des deux valeurs est ",max(10,4))
print("Le maximum des deux valeurs est ",max(5,6))
La sortie du code ci-dessus est :
两值比较最大值为 10 两值比较最大值为 6
En Lua, nous pouvons passer des fonctions comme arguments à d'autres fonctions, comme dans l'exemple suivant :
Exemple
print("Ceci est la fonction print - ##",param,"##")
end
function add(num1,num2,functionPrint)
result = num1 + num2
-- Appeler le paramètre de fonction transmis
functionPrint(result)
end
myprint(10)
-- la fonction myprint est passée en argument
add(2,5,myprint)
La sortie du code ci-dessus est :
这是打印函数 - ## 10 ## 这是打印函数 - ## 7 ##
Valeurs de retour multiples
Les fonctions Lua peuvent renvoyer plusieurs valeurs de résultat, comme string.find, qui renvoie les "indices de début et de fin" de la chaîne correspondante (ou nil si aucune correspondance n'est trouvée).
> s, e = string.find("www.example.com", "example")
> print(s, e)
5 10
Dans les fonctions Lua, listez les valeurs à renvoyer après return pour renvoyer plusieurs valeurs, par exemple :
Exemple
local mi = 1 -- Indice de la valeur maximale
local m = a[mi] -- Valeur maximale
for i,val in ipairs(a) do
if val > m then
mi = i
m = val
end
end
return m, mi
end
print(maximum({8,10,23,12,5}))
La sortie du code ci-dessus est :
23 3
Arguments variables
Les fonctions Lua peuvent accepter un nombre variable de paramètres. Comme en C, utilisez trois points dans la liste des paramètres de la fonction... pour indiquer que la fonction a des paramètres variables.
function add(...)
local s = 0
for i, v in ipairs{...} do --> {...} 表示一个由所有变长参数构成的数组
s = s + v
end
return s
end
print(add(3,4,5,6,7)) --->25
Nous pouvons affecter les arguments variables à une variable.
Par exemple, calculons la moyenne de plusieurs nombres :
Exemple
result = 0
local arg={...} --> arg est une table, variable locale
for i,v in ipairs(arg) do
result = result + v
end
print("Nombre total de " .. #arg .. " nombres")
return result/#arg
end
print("La moyenne est",average(10,5,3,4,5,6))
La sortie du code ci-dessus est :
总共传入 6 个数 平均值为 5.5
Nous pouvons aussi utiliser select("#",...) pour obtenir le nombre d'arguments variables :
Exemple
result = 0
local arg={...}
for i,v in ipairs(arg) do
result = result + v
end
print("Nombre total de " .. select("#",...) .. " nombres")
return result/select("#",...)
end
print("La moyenne est",average(10,5,3,4,5,6))
La sortie du code ci-dessus est :
总共传入 6 个数 平均值为 5.5
Parfois, nous pouvons avoir besoin de quelques paramètres fixes en plus des arguments variables. Les paramètres fixes doivent être placés avant les arguments variables :
Exemple
return io.write(string.format(fmt, ...))
end
fwrite("example\n") ---> fmt = "example", aucun argument variable.
fwrite("%d%d\n", 1, 2) ---> fmt = "%d%d", les arguments variables sont 1 et 2
La sortie est :
example 12
Habituellement, lors de l'itération sur des arguments variables, vous n'avez besoin d'utiliser que{…}, cependant, les arguments variables peuvent contenir certainsnil, alors vous pouvez utiliser la fonctionselectpour accéder aux arguments variables :select('#', …)ouselect(n, …)
- select('#', …)Renvoie la longueur des arguments variables.
- select(n, …)Utilisé pour renvoyer à partir de la position de départnla liste de tous les arguments depuis la position de départ jusqu'à la position finale.
Lors de l'appel à select, vous devez passer un sélecteur d'argument effectif fixe (commutateur de sélection) et une série d'arguments variables. Si le sélecteur est le nombre n, alors select renvoie la liste d'arguments à partir de l'indexnjusqu'à la position finale, toutes les listes d'arguments ; sinon il ne peut être que la chaîne#, auquel cas select renvoie le nombre total d'arguments variables.
Exemple
a = select(3,...) --> À partir de la troisième position, la variable a correspond au premier paramètre de la liste de variables à droite
print (a)
print (select(3,...)) --> Afficher tous les paramètres de la liste
end
f(0,1,2,3,4,5)
La sortie est :
2 2 3 4 5
Exemple
function foo(...)
for i = 1, select('#', ...) do --> Obtenir le nombre total de paramètres
local arg = select(i, ...); --> Lire les paramètres ; arg correspond au premier paramètre de la liste de variables à droite
print("arg", arg);
end
end
foo(1, 2, 3, 4);
end
La sortie est :
arg 1 arg 2 arg 3 arg 4Autres extensions