Menu
Coddy logo textTech

メタテーブルとは?

CoddyのLuaジャーニー「ロジックと制御フロー」セクションの一部。レッスン 16/54。

メタテーブルとは、単なる通常のLuaテーブルですが、特別な目的があります。メタテーブルを別のテーブル(これを「main」テーブルと呼びます)に関連付けると、そのmainテーブルに特定の操作が実行されたときの動作を変更できます。

次のように考えてみてください。通常、+演算子を使って2つのテーブルを足し合わせようとすると、Luaはどうすればよいかわからず、エラーを返します。しかし、メタテーブルを使えば、テーブルに対する加算が何を意味するのかを定義できます。対応する値を加算したり、内容を連結したり、プログラムにとって意味のある他の処理を行ったりできます。

メタテーブルは、メタメソッドと呼ばれる特別な関数を定義することで機能します。これらのメタメソッドには、加算を表す__addや、見つからないキーを検索するための__indexのように、2つのアンダースコアで始まる特定の名前が付けられます。Luaがメタテーブルを持つテーブルに対する操作に遭遇すると、そのメタテーブルに対応するメタメソッドがあるかどうかを確認し、それを使って何が起こるべきかを決定します。

この概念により、独自の振る舞いを持つカスタムデータ型の作成、オブジェクト指向パターンの実装、テーブルの望ましくない変更からの保護など、さまざまな可能性が開かれます。これからのレッスンでは、テーブルにメタテーブルを関連付け、メタメソッドを使用してその振る舞いをカスタマイズする方法を学びます。

自分で試してみよう

このレッスンにはコードチャレンジは含まれていません。

quiz icon腕試し

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

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

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