2011年5月24日 星期二

Lua OO Library - bmclass 簡介

前言

一開始是為了練習 Lua 裡面的 metatable 而開始實作 OO 系統的,而實作過程當然也是一邊參考其它 Lua OO Library 的 source code 以及 demo,一邊進行開發。但參考這些 Library 時,有些功能較多的範例不是很好懂(source code 更難懂);而較簡單的我又認為不夠用,因此便朝著自己想像的功能進行開發,最後便是 bmclass 這個 Library 的誕生。

本篇的兩個範例,一個是最基本的使用方式,一個是針對主要功能多重繼承的範例。剩下的等未來有空時再慢慢針對 bmclass 做些解說與介紹。

 

Library 下載

bmclass.lua

 

使用範例

範例一(最基本的使用方式)

 
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"
 

沒有留言:

張貼留言