Account .lua
Account = {balance = 0}
function Account:ctor(o)
o = o or { balance = 0 }
setmetatable(o, self)
self.__index = self
return o
end
function Account:withdraw(v)
if v > self.balance then error"insufficient funds" end
self.balance = self.balance - v
end
function Account:deposit(v)
self.balance = self.balance + v
end
Name.lua
Name = {}
function Name:getName()
return self.name;
end
function Name:setName(n)
self.name = n
end
LuaUtils.lua
local function search( k, plist )
for i, v in pairs(plist) do
func = v[k]
if func then
return func
end
end
end
function class(...)
local c = {}
local parent = {...}
setmetatable(c,{ __index = function(t, k)
local v = search( k, parent )
t[k] = v;
print( "search:"..k)
return v;
end})
c.__index = c
function c:ctor(o)
o = o or {}
setmetatable(o, c)
return o
end
return c
end
main.lua
require("Account")
require("Name")
require("LuaUtils")
local function main()
local NameAccount = class( Account, Name )
local account = NameAccount:ctor()
account:setName( "paul ")
print( account:getName())
end
main()