Luaの匿名関数(無名関数)は、名前を持たない関数として定義し、変数に代入したり、他の関数に渡したりすることができます。
※ラムダ式とも呼ばれます。
例
-- 足し算を行う匿名関数 local add = function(x, y) return x + y end -- 匿名関数の呼び出し print(add(2, 3)) -- 出力: 5
匿名関数の利点はコードの簡潔化、高階関数やコールバック関数になります。
コードの簡潔化の例(テーブル内の関数)
local my_table = { add = function(x, y) return x + y end, subtract = function(x, y) return x - y end } print(my_table.add(2, 3)) -- 出力: 5
高階関数の例
-- 2つの数を引数にとり、その差を返す関数を返す関数 local create_subtract_function = function(x) return function(y) return x - y end end -- 5を引く関数を生成 local subtract_5 = create_subtract_function(5) print(subtract_5(3)) -- 出力: 2
コールバック関数の例
function my_function(callback) -- 何か処理を行う -- 処理が完了したら、コールバック関数を呼び出す callback("処理が完了しました") end -- コールバック関数として実行する匿名関数 my_function(function(message) print(message) -- "処理が完了しました"と出力 end)