Luaリファレンスマニュアルの日本語訳でお勉強第三回です。もともとの目的だったLightroom SDKも並行して調べてますが、そっちはあとでまとめて書きます。

メタテーブル

大雑把にいえばメタテーブルは演算子オーバーロードを実現する仕組み、ですね(といい加減なことを書くとえらいひとに怒られるかもしれませんが)。

値は「メタテーブル」を持つことができます。メタテーブルは、連結とか長さとか加算とかの演算子の振る舞い定義に使われます。+が呼ばれたときに、メタテーブルのaddメタメソッドが呼ばれる、という風に動きます。

テーブルやユーザデータ(ってのはC言語側データでバイト列として扱われる)のメタテーブルは、setmetatable関数で変更できます。ほかの基本型のメタテーブルは変更できません(C APIでは変更できる、そうですが)。

加算とか減算とかだけじゃなくて、「値を関数呼び出ししたときに呼ばれる」メタメソッドなんてのもあります。

う、時間切れです。今回はここまで。