関数を持つテーブル
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
end3つのアプローチはすべて同じ結果を生成します。ドット記法を使用して関数を呼び出します:myTable.greet("Alice")。関数とデータを束ねるこのパターンは、Luaにおけるオブジェクト指向プログラミングの基礎です。
チャレンジ
簡単4つの算術関数を含む calculator という名前のテーブルを作成してください:
add(a, b)-aとbの和を返しますsubtract(a, b)-aからbを引いた値を返しますmultiply(a, b)-aとbの積を返しますdivide(a, b)-aをbで割った値を返します
3つの入力を受け取ります:
- 操作名(
add、subtract、multiply、divideのいずれか) - 1番目の数値
- 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テーブルから適切な関数を呼び出す
-- そして結果を表示するこのレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。