Menu
Coddy logo textTech

関数を持つテーブル

CoddyのLuaジャーニー「Object Oriented Programming」セクションの一部 — レッスン 1/70。

Luaでは、テーブルは非常に多機能です。データを格納するだけでなく、関数を保持することもできます。これにより、関連する操作をグループ化し、コードを整理して管理しやすくすることができます。

テーブルの中に関数を配置するには、他の値と同じようにキーに割り当てるだけです。

local myTable = {
    greet = function(name)
        return "Hello, " .. name
    end
}

print(myTable.greet("Alice"))  -- 出力: Hello, Alice

関数を個別に定義してから、それをテーブルに追加することもできます:

local myTable = {}

myTable.greet = function(name)
    return "Hello, " .. name
end

または、こちらのより簡潔な短縮構文を使用します:

local myTable = {}

function myTable.greet(name)
    return "Hello, " .. name
end

3つのアプローチはすべて同じ結果を生成します。ドット記法を使用して関数を呼び出します:myTable.greet("Alice")。関数とデータを束ねるこのパターンは、Luaにおけるオブジェクト指向プログラミングの基礎です。

challenge icon

チャレンジ

簡単

4つの算術関数を含む calculator という名前のテーブルを作成してください:

  • add(a, b) - ab の和を返します
  • subtract(a, b) - a から b を引いた値を返します
  • multiply(a, b) - ab の積を返します
  • divide(a, b) - ab で割った値を返します

3つの入力を受け取ります:

  1. 操作名(addsubtractmultiplydivide のいずれか)
  2. 1番目の数値
  3. 2番目の数値

操作名に基づいて calculator テーブルから適切な関数を呼び出し、その結果を出力してください。

チートシート

Luaでは、テーブルにデータと共に関数を格納することができます。テーブルに関数を追加するには、キーに関数を割り当てます。

local myTable = {
    greet = function(name)
        return "Hello, " .. name
    end
}

print(myTable.greet("Alice"))  -- 出力: Hello, Alice

また、関数を個別に定義してテーブルに追加することもできます。

local myTable = {}

myTable.greet = function(name)
    return "Hello, " .. name
end

または、次の短縮構文を使用します:

local myTable = {}

function myTable.greet(name)
    return "Hello, " .. name
end

ドット記法を使用してテーブルの関数を呼び出します:myTable.greet("Alice")

自分で試してみよう

-- 入力を読み込む
local operation = io.read()
local num1 = tonumber(io.read())
local num2 = tonumber(io.read())

-- TODO: 4つの関数を持つcalculatorテーブルを作成する:
-- add(a, b), subtract(a, b), multiply(a, b), divide(a, b)


-- TODO: 演算名を使用してcalculatorテーブルから適切な関数を呼び出す
-- そして結果を表示する
quiz icon腕試し

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

Object Oriented Programmingのすべてのレッスン