Luaの匿名関数について

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)
マインクラフト用ビジュアルエディタを開発しています。
詳しくはinunosinsi/mcws_blockly - githubをご覧ください。