1.概述
rawset
2.实例
test.lua-----------------------
Window = {}
Window.prototype = {x = 0 ,y = 0 ,width = 100 ,height = 100,}
Window.mt = {}
function Window.new(o)
setmetatable(o ,Window.mt)
return o
end
Window.mt.__index = Window.prototype
Window.mt.__newindex = function (table ,key ,value)
if key == "wangbin" then
rawset(table ,"wangbin" ,"yes,i am")
end
end
w = Window.new{x = 10 ,y = 20}
w.wangbin = "55"
print(w.wangbin)
然后,我们可以看到打印信息是:yes,i am
原本赋值的地方是w.wangbin = "55",但是结果却是 yes,i am。
这里就改变了元表的行为模式。
3.分析
3.1.
__index是当我们访问一个表中的元素不存在时,则会触发去寻找__index元方法,如果不存在,