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

これも、値が既に設定されている場合は、メタテーブルで設定した関数を通っていない???