上一篇介绍了__index元方法,总结来说:__index元方法是用于处理访问table中不存在的字段时的情况。
而今天,介绍的__newindex元方法,总结来说,就是:用于处理给table中不存在的字段赋值时的情况。也就是说,当给table中不存在的字段赋值时,将会调用__newindex元方法,代替赋值操作。
tb = setmetatable({name = "dong"},{__newindex = function(tb, k, v) print("can,t assgin value:"..v.." because no this key:"..k.." in tb") end }) tb.age = 12
打印结果:can,t assgin value:12 because no this key:age in tb
总结:
(1)如果__newindex是一个函数,则在给table不存在的字段赋值时,会调用这个函数。
(2)如果__newindex是一个table,则在给table不存在的字段赋值时,会直接给__newindex的table赋值。