Menu
Coddy logo textTech

メタテーブルとは?

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

メタテーブルは単なる通常のLuaテーブルですが、特別な目的を持っています。メタテーブルを別のテーブル(ここでは「メイン」テーブルと呼びましょう)にアタッチすると、そのメインテーブルに対して特定の操作が行われたときの振る舞いを変更することができます。

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

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

この概念は、独自の振る舞いを持つカスタムデータ型の作成、オブジェクト指向パターンの実装、意図しない変更からのテーブルの保護など、さまざまな可能性を広げます。今後のレッスンでは、テーブルにメタテーブルをアタッチし、メタメソッドを使用してその振る舞いをカスタマイズする方法を学びます。

自分で試してみよう

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

quiz icon腕試し

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

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