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 >