????Lua??????????????????????????????????????????????????????á???????????Lua??????????table??????????????????????????????????????????table?С??磺
-- file:test.lua
local test = {}
function test:get_x()
return self.x or 0
end
function test:set_x( _x )
self.x = _x
end
local test_module = {}
function test_module.new()
local t = {}
for k??v in pairs( test ) do
t[k] = v
end
return t
end
return test_module
???????????????
????-- file:main.lua
????local test = require "test"
????local _t = test.new()
????_t:set_x( 999 )
????print( _t:get_x() )
???????????????????????????????????????д??Щ???
????1.???????????????(???????????????C++???????)
????2.????????????????????????????
????3.??????

????Lua?????????(metatable)?????????????????????????£?
????1.?????????????????????
-- file:oo.lua
local oo = {}
local cls = {}
local function new( clz )
local t = {}
setmetatable(t?? clz)
return t
end
function oo.class( parent??name )
local t = {}
cls[name] = t
parent = parent or {}
rawset( t??"__index"??t )
setmetatable( t??{ __index = parent??__call = new } )
return t
end
return oo
????2.???????д???????
-- file:test.lua
local oo = require "oo"
local test = oo.class( nil??... )
function test:get_x()
return self.x or 0
end
function test:set_x( _x )
self.x = _x
end
return test