Menu
Coddy logo textTech

第一級の値としての関数

CoddyのLuaジャーニー「ロジックと制御フロー」セクションの一部。レッスン 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

チャレンジ

簡単

applyOperation 関数を作成してください。この関数は aboperation を受け取り、2つの数値に operation function を適用した結果を返します。

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

ロジック:

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

パラメーター:

  • a (number): 最初の数値
  • b (number): 2番目の数値
  • operation (table): "func" キーに保存された function を含むテーブル

戻り値: ab を使って operation function を呼び出した結果 (number)

自分で試してみよう

function applyOperation(a, b, operation)
    -- ここにコードを書いてください
end
quiz icon腕試し

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

ロジックと制御フローのすべてのレッスン

自分で練習してみよう: Luaオンラインコンパイラ