IT練習ノート

IT関連で調べたこと(実際は嵌ったこと)を書いています。

Luaのメタテーブル

普通の計算

>
> = 1 + 1
2
> x = 2
> = 1 + x
3

テーブルを足し算。当然エラーになる。

> y = {}
> = 1 + y
stdin:1: attempt to perform arithmetic on global 'y' (a table value)
stack traceback:
    stdin:1: in main chunk
    [C]: in ?

メタテーブルに特別な関数を設定すると、エラーにならない。

> setmetatable(y, {__add = function() return 3 end})
> = 1 + y
3
>