例如,我有a.lua,b.lua,c.lua。他們有許多相同的代碼,他們在不同的lua VM中運行。所以我想實現一個通用模塊,其中包含相同的代碼a,b,c。如何在lua中實現接口?
如下的問題:
1.如果一個,B,C具有相同的可變v_status和v_status的值範圍是一定的。例如,該值是:
STAT_NULL = 1
STAT_ACTIVE = 2
STAT_INACTIVE = 3
我想我有兩種方法來實現通用模塊
第一種方式是:
--common.lua
local common = {}
local v_status = STAT_NULL
function common.set_status(st)
v_status = st
end
function common .get_status()
return v_status
end
return common
在,B,C,我需要「共同」模塊
local common = require "common"
如果我想設置/獲得信tatus,我能做到這些:
common.set_status(STAT_ACTIVE)
local status = common.get_status()
==================================== ==============================================
第二種方式是:
local common = {}
function common:set_status(st)
self.v_status = st
end
function common:get_status()
return self.v_status
end
return common
在,b,C,我可以調用這些函數如下:
local common = require "common"
common:set_status(STAT_ACTIVE)
local status = common:get_status()
我想知道哪一個是正確的。也許他們都錯了。請告訴我正確的方法來做到這一點。 我是lua的新手,我想用lua的風格來代替c/C++來實現這個功能。 非常感謝!
這兩個都是正確的。區別在於「普通」是否是「對象」。如果將通用模塊看作單例對象是有意義的,那麼使用':'就是有意義的。如果不是,無論出於何種原因,那麼使用'.'可能會更好。這就是說,我不確定爲什麼對於這個例子的用法來說,一個模塊是有意義的。 – 2014-09-24 18:47:31