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
endmain.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()
本文介绍了一个使用Lua语言实现的简单面向对象程序实例。通过Account和Name两个类的定义及继承,展示了如何创建对象、设置和获取属性。同时,介绍了Lua中元表的应用,以及自定义构造函数和方法的具体实现。
532

被折叠的 条评论
为什么被折叠?



