首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

了解Lua语言中的_index,newindex,rawget和rawset

2013-09-29 
理解Lua语言中的__index,__newindex,rawget和rawset在谈及Lua中的__index,__newindex,rawget和rawset前,需

理解Lua语言中的__index,__newindex,rawget和rawset

在谈及Lua中的__index,__newindex,rawget和rawset前,需要理解Lua中的元表这个概念。

零、元表的概念

对Lua中元表的解释: 元表可以改变表的行为模式。

这里举个例子:

Window = {}Window.prototype = {x = 0 ,y = 0 ,width = 100 ,height = 100,}Window.mt = {}function Window.new(o)setmetatable(o ,Window.mt)return oendWindow.mt.__index = function (t ,key)return 1000endWindow.mt.__newindex = function (table ,key ,value)table.key = "yes,i am"endw = Window.new{x = 10 ,y = 20}w.wangbin = "55"
然后我们的程序就stack overflow了。可见,程序陷入了死循环。因为w.wangbin这个元素本来就不存在表中,然后这里不断执行进入__newindex,陷入了死循环。

热点排行