1. ホーム
  2. スクリプト・コラム
  3. ルア

Luaの関数関連知識まとめ

2022-02-11 16:24:24

 関数は、あるタスクを一緒に実行するステートメントのセットです。コードを別々の関数に入れることは可能です。関数間でどのようにコードを分割するかはそれぞれですが、論理的な分割は通常、各関数が特定のタスクを実行するために行われます。

Lua言語には、プログラムが呼び出すことのできる組み込みのメソッドが数多く用意されています。例えば、print()というメソッドは、引数を渡す入力としてコンソールに表示します。

関数は、メソッド、サブルーチン、プロシージャなど、さまざまな名前で知られています。
関数の定義

プログラミング言語Luaにおけるメソッドの定義の一般的な形式は、以下の通りです。

コピーコード コードは以下の通りです。
optional_function_scope function function_name( argument1, argument2, argument3... , argumentn) , argumentn)
function_body
return result_params_comma_separated
end

プログラミング言語Luaのメソッド定義には、メソッドヘッダとメソッドボディがあります。以下は、メソッドのすべての部分です。

  •     オプションの関数は、スコープを適用します:キーワードのローカルスコープ制限関数または無視のスコープ部分を使用すると、グローバル関数になります。
  •     関数名:これは実際の関数の名前です。関数名と引数のリストを合わせて、関数シグネチャを構成します。
  •     パラメータ。パラメータはプレースホルダーのようなものです。関数が呼び出されると、その値がパラメータに渡されます。この値は、実際のパラメータまたは引数と呼ばれます。パラメータリストは、メソッドのパラメータの種類、順序、数です。パラメータはオプションです。つまり、メソッドにパラメータがない場合もあります。
  •     関数本体。メソッド本体には、メソッドが何を行うかを定義する一連のステートメントが含まれます。
  •     リターン Luaではreturnキーワードは次のコンマで区切られた複数の値を返すことができます。

以下は、max()を呼び出す関数のソースコードです。この関数は、num1とnum2の2つの引数をとり、それらの間の最大値を返します。

コピーコード コードは以下の通りです。
--[[ function returning the max between two numbers --]]
function max(num1, num2)

   if (num1 > num2) then
      result = num1;
   else
      result = num2;
   end

   return result;
end

関数のパラメータです。

関数がパラメータを使用する場合、受け入れられるパラメータ値の変数を宣言する必要があります。これらの変数は、関数の正式な引数によって呼び出されます。

形式引数は、関数内部で他の局所変数と同じように振る舞い、関数への入力時に生成され、終了時に破棄されます。
関数を呼び出しています。

Luaの関数を作成する場合、どのような関数を与えるかを定義する必要があります。メソッドを使用するには、定義されたタスクを実行するために関数を呼び出す必要があります。

プログラムが関数を呼び出すと、プログラムの制御は呼び出された関数に移る。呼び出された関数は定義されたタスクを実行し、プログラムの制御は、メインプログラムがreturnステートメントを実行するか、関数の終了が到来した時点でメインプログラムに戻されます。

その代わり、呼び出しは単にメソッド名だけでなく、必要なパラメータを渡す必要があり、メソッドが値を返す場合は、返された値を保存することができます。例えば

コピーコード コードは以下の通りです。
function max(num1, num2)

   if (num1 > num2) then
      result = num1;
   else
      result = num2;
   end

   return result;
end

-- calling a function
print("The maximum of the two numbers is ",max(10,4))
print("The maximum of the two numbers is ",max(5,6))

上記のコードを実行すると、以下のような出力が得られます。

コピーコード コードは以下の通りです。
The maximum of the two numbers is 10
The maximum of the two numbers is 6

関数の割り当てと受け渡し

Luaでは、変数を関数に代入したり、別の関数に引数として渡したりすることができます。ここでは、Luaで関数を引数として渡すための代入の簡単な例を示します。

コピーコード コードは以下の通りです。
myprint = function(param)
   print("This is my print function - ##",param,"##")
end

function add(num1,num2,functionPrint)
   result = num1 + num2
   functionPrint(result)
end
myprint(10)
add(2,5,myprint)

上記のコードを実行すると、以下のような出力が得られます。

コピーコード コードは以下の通りです。
This is my print function - ## 10 ##
This is my print function - ## 7 ##

関数と変数のパラメータ

Luaでは、変数引数......を引数にした関数を作成することができます。変数の引数を使って、関数が平均値を返す例を見てみましょう。

コピーコード コードは以下の通りです。
function average(...)
   result = 0
   local arg={...}
   for i,v in ipairs(arg) do
      result = result + v
   end
   return result/#arg
end

print("The average is",average(10,5,3,4,5,6))

上記のコードを実行すると、以下のような出力が得られます。

コピーコード コードは以下の通りです。
The average is 5.5