Fonctions Lua


En Lua, les fonctions sont le principal moyen d'abstraire des déclarations et des expressions. Il peut être utilisé pour gérer certaines tâches spéciales et calculer certaines valeurs.

Lua fournit de nombreuses fonctions intégrées que vous pouvez facilement appeler dans votre programme. Par exemple, la fonction print() peut imprimer les paramètres transmis sur la console.

Les fonctions Lua ont deux utilisations principales :

  • 1 Terminer la tâche spécifiée, auquel cas la fonction est utilisée comme instruction d'appel

  • .
  • 2. Calculer et renvoyer la valeur Dans ce cas, la fonction est utilisée comme expression de l'instruction d'affectation.

Définition de la fonction

Le format de définition de la fonction du 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

Analyse :

  • optional_function_scope

  •  : Ce paramètre est facultatif pour spécifier si la fonction est une fonction globale ou une fonction locale. S'il n'est pas défini, la fin de ceci. Le paramètre est une fonction globale. Si vous devez définir la fonction comme locale. La fonction nécessite le mot-clé

  • local
  • .

  • function_name :

  • Spécifie le nom de la fonction.

  • argument1, argument2, argument3..., argumentn :

  • Paramètres de fonction, plusieurs paramètres sont séparés par des virgules Activée, la fonction ne peut également prendre aucun paramètre.

  • function_body :

  • Corps de la fonction, le bloc d'instructions de code qui doit être exécuté dans la fonction.

  • result_params_comma_separated :

  • Valeur de retour de la fonction, la fonction du langage Lua peut renvoyer plusieurs valeurs, chaque valeur est séparée par un Séparés par des virgules.

  • Exemple

    L'exemple suivant définit la fonction max(), avec les paramètres num1, num2, qui permet de comparer la taille de deux valeurs et renvoie la valeur maximale :

    --[[ 函数返回两个值的最大值 --]]
    function max(num1, num2)
    
       if (num1 > num2) then
          result = num1;
       else
          result = num2;
       end
    
       return result; 
    end
    -- 调用函数
    print("两值比较最大值为 ",max(10,4))
    print("两值比较最大值为 ",max(5,6))

    Le résultat de l'exécution du code ci-dessus est :

    两值比较最大值为 	10
    两值比较最大值为 	6

    En Lua, nous pouvons passer la fonction en paramètre à la fonction, comme le montre l'exemple suivant :

    myprint = function(param)
       print("这是打印函数 -   ##",param,"##")
    end
    
    function add(num1,num2,functionPrint)
       result = num1 + num2
       -- 调用传递的函数参数
       functionPrint(result)
    end
    myprint(10)
    -- myprint 函数作为参数传递
    add(2,5,myprint)

    Le résultat de l'exécution du code ci-dessus est :

    这是打印函数 -   ##	10	##
    这是打印函数 -   ##	7	##

    Plusieurs valeurs de retour

    La fonction Lua peut renvoyer plusieurs valeurs de résultat, telles que string.find , qui renvoie la chaîne correspondante « indices de début et de fin » (s'il n'y a pas de chaîne correspondante, renvoie nil).

    > s, e = string.find("www.php.cn", "php") 
    > print(s, e)
    5	10

    Dans la fonction Lua, plusieurs valeurs peuvent être renvoyées en listant la liste des valeurs à retourner après le retour, telles que :

    function maximum (a)
        local mi = 1             -- 最大值索引
        local m = a[mi]          -- 最大值
        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}))

    Le résultat de l'exécution du code ci-dessus est :

    23	3

    Paramètres variables

    La fonction Lua peut accepter un nombre variable de paramètres. Semblable au langage C, trois points (...) sont utilisés dans le paramètre de la fonction. liste pour indiquer que la fonction a des paramètres variables.

    Lua place les paramètres de la fonction dans un tableau appelé arg #arg représente le nombre de paramètres transmis.

    Par exemple, on calcule la moyenne de plusieurs nombres :

    function average(...)
       result = 0
       local arg={...}
       for i,v in ipairs(arg) do
          result = result + v
       end
       print("总共传入 " .. #arg .. " 个数")
       return result/#arg
    end
    
    print("平均值为",average(10,5,3,4,5,6))

    Le résultat de l'exécution du code ci-dessus est :

    总共传入 6 个数
    平均值为	5.5