云风的lua oo 实现方法 http://blog.codingnow.com/2006/06/oo_lua.html
继续在云风的类上改
setmetatable(class_type,{__newindex=
function(t,k,v)
vtbl[k]=v
local newgt = {} -- create new environment
setmetatable(newgt,
{__index =
function(t1,k1)
v1 = vtbl[k1]
if v1 ~= nil then
return v1
end
local v1 = _G[k1]
if v1 ~= nil then
return v1
end
return v1
end
}
)
setfenv(v, newgt)
end
})
这样是类的静态函数调用前不用加self,非静态的要加self作为第一个参数,等于无用功。
应该是要定义一个全局变量super, 使用debug函数获取闭包 upvalue等信息。