Menu
Coddy logo textTech

第一級の値としての関数

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
challenge icon

チャレンジ

簡単

ab、および operation を受け取り、2つの数値に operation 関数を適用した結果を返す関数 applyOperation を作成してください。

operation パラメータは、ab を引数として呼び出される関数を含むテーブルです。

ロジック:

  • キー "func" を使用して operation テーブルから関数を抽出します
  • その関数を ab を引数として呼び出します
  • 結果を返します

パラメータ:

  • a (数値): 1番目の数値
  • b (数値): 2番目の数値
  • operation (テーブル): キー "func" に関数が格納されているテーブル

戻り値: ab を使用して 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
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

Logic & Flowのすべてのレッスン