第一級の値としての関数
CoddyのLuaジャーニー「Logic & Flow」セクションの一部 — レッスン 12/54。
Luaでは、関数は単にタスクを実行するコードのブロックではありません。関数は、他のデータ型と同じように扱うことができる「値」です。つまり、数値、文字列、またはテーブルを扱うのと同じ方法で関数を扱うことができます。
関数を変数に格納することができます:
local greet = function()
print("Hello!")
end
greet() -- 出力: Hello!ここでは、関数が変数 greet に代入されており、通常の関数と同じように呼び出すことができます。これにより、コードの構造化において強力な可能性が広がります。
関数は、他の関数の引数として渡すこともできます。これは、ある関数が別の関数で定義された動作を利用したい場合に特に便利です。
function executeAction(action)
action()
end
local sayHello = function()
print("Hello from a function!")
end
executeAction(sayHello) -- 出力: Hello from a function!この例では、executeAction は関数をパラメータとして受け取り、それを呼び出します。関数 sayHello は、数値や文字列を渡すのと同じように渡されます。
関数は他の関数を返すことさえできます。これにより、特定の条件やパラメータに基づいて動的に関数を作成することができます:
function createMultiplier(factor)
return function(number)
return number * factor
end
end
local double = createMultiplier(2)
print(double(5)) -- 出力: 10チャレンジ
簡単a、b、および operation を受け取り、2つの数値に operation 関数を適用した結果を返す関数 applyOperation を作成してください。
operation パラメータは、a と b を引数として呼び出される関数を含むテーブルです。
ロジック:
- キー
"func"を使用してoperationテーブルから関数を抽出します - その関数を
aとbを引数として呼び出します - 結果を返します
パラメータ:
a(数値): 1番目の数値b(数値): 2番目の数値operation(テーブル): キー"func"に関数が格納されているテーブル
戻り値: a と b を使用して operation 関数を呼び出した結果 (数値)
チートシート
Luaにおいて、関数は変数に格納したり、引数として渡したり、他の関数から返したりすることができるファーストクラスの値です。
関数を変数に格納する:
local greet = function()
print("Hello!")
end
greet() -- 出力: Hello!関数を引数として渡す:
function executeAction(action)
action()
end
local sayHello = function()
print("Hello from a function!")
end
executeAction(sayHello) -- 出力: Hello from a function!他の関数から関数を返す:
function createMultiplier(factor)
return function(number)
return number * factor
end
end
local double = createMultiplier(2)
print(double(5)) -- 出力: 10自分で試してみよう
function applyOperation(a, b, operation)
-- ここにコードを記述してください
end
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。