前言
一開始是為了練習 Lua 裡面的 metatable 而開始實作 OO 系統的,而實作過程當然也是一邊參考其它 Lua OO Library 的 source code 以及 demo,一邊進行開發。但參考這些 Library 時,有些功能較多的範例不是很好懂(source code 更難懂);而較簡單的我又認為不夠用,因此便朝著自己想像的功能進行開發,最後便是 bmclass 這個 Library 的誕生。
本篇的兩個範例,一個是最基本的使用方式,一個是針對主要功能多重繼承的範例。剩下的等未來有空時再慢慢針對 bmclass 做些解說與介紹。
Library 下載
使用範例
範例一(最基本的使用方式)
class = require("bmclass")
a = class("a")
function a:init()
print("for init")
end
function a:hello()
print(tostring(self) .. " : Hello!!!")
end
b = a("b") -- output "for init"
b:hello() -- output "Object b : Hello!!!"
範例二(多重繼承)
class = require("bmclass")
a = class("a")
b = class("b")
c = class("c", a, b) -- superclass a and b
function a:init() print("a init") end
function b:init() print("b init") end
function c:init()
c:next(self, "init") -- next to the superclass
print("c init")
end
function a:hello1() print("Hello1") end
function b:hello2() print("Hello2") end
function c:hello3() print("Hello3") end
d = c("d")
-- output
-- a init
-- b init
-- c init
d:hello1() -- output "Hello1"
d:hello2() -- output "Hello2"
d:hello3() -- output "Hello3"