Lua 関数


Lua では、関数はステートメントや式を抽象化する主な方法です。これは、いくつかの特別なタスクを処理したり、いくつかの値を計算したりするために使用できます。

Lua は、プログラム内で簡単に呼び出すことができる多くの組み込み関数を提供します。たとえば、print() 関数は、渡されたパラメーターをコンソールに出力できます。

Lua 関数には主に 2 つの用途があります:

  • 1. 指定されたタスクを完了する。この場合、関数は呼び出しステートメントとして使用されます。2. 関数は次のようになります。代入文の式として使用される。

  • 関数定義

  • Lua プログラミング言語の関数定義形式は次のとおりです:
optional_function_scope function function_name( argument1, argument2, argument3..., argumentn)
	function_body
	return result_params_comma_separated
end

分析:

optional_function_scope
  • : このパラメーターは、関数がグローバル関数であるか、グローバル関数であるかを指定するためのオプションです。ローカル関数、未設定 このパラメータの最後はグローバル関数です。関数をローカル関数に設定する必要がある場合は、キーワード

  • local

  • を使用する必要があります。
  • function_name:
  • 関数名を指定します。

  • argument1、argument2、argument3...、argumentn:
  • 関数のパラメータ。複数のパラメータはカンマで区切られ、関数にはパラメータを持たないこともできます。

  • function_body:
  • 関数本体、関数内で実行する必要があるコードステートメントのブロック。

  • result_params_comma_ Separated:
  • 関数の戻り値、Lua 言語関数は複数の値を返すことができ、各値はカンマで区切られます。

  • 次の例では、パラメーター num1、num2 を備えた関数
  • max()

    を定義します。この関数は、2 つの値の大きさを比較し、最大値を返すために使用されます。上記のコードは次のとおりです:

    --[[ 函数返回两个值的最大值 --]]
    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))

    Lua の場合 次の例に示すように、関数をパラメータとして関数に渡すことができます:

    两值比较最大值为 	10
    两值比较最大值为 	6
    上記のコードの実行結果は次のとおりです:

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

    複数の戻り値

    Luaこの関数は、string.find などの複数の結果値を返すことができます。これは、一致する文字列「開始添え字と終了添え字」を返します (一致する文字列が存在しない場合は nil を返します)。

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

    Lua関数では、次のようにreturn後に返される値のリストを列挙することで複数の値を返すことができます:
    > s, e = string.find("www.php.cn", "php") 
    > print(s, e)
    5	10

    上記のコードの実行結果は次のとおりです:

    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}))

    変数パラメータ

    Lua 関数は、C 言語と同様に可変数のパラメーターを受け入れることができ、関数パラメーター リストで 3 つのドット (...) を使用して、関数に可変パラメーターがあることを示します。

    Lua は関数のパラメータを arg というテーブルに配置します。
    #arg

    は渡されるパラメータの数を表します。

    たとえば、いくつかの数値の平均を計算します:

    23	3

    上記のコードの実行結果は次のとおりです:

    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))