rawset()
#!/usr/bin/env lua mt = {} mt.__index = function(t, idx) return "FOO" end mt.__newindex = function(t, idx, v) print(idx, v) return rawset(t, idx, v) end t = { "foo", "bar", "baz" } setmetatable(t, mt) t[1] = "FOO" t[10] = "FOO" print(t[2]) print(t["x"])
で、
10 FOO bar FOO
これも、値が既に設定されている場合は、メタテーブルで設定した関数を通っていない???