Lua中有一個叫module
的公有函數(shù),此函數(shù)的作用是將一組變量和函數(shù)打包在一個模塊名下,便于其他文件require
。但是這個函數(shù)受到了諸多的指責,原因是其會創(chuàng)建一個公共變量,并且這個公共變量中的所有細節(jié)都會暴露出來。這其實十分不符合面向?qū)ο蟮囊?guī)范。
以下有一種辦法可以避免這個問題,即不采用module
函數(shù)進行打包。
-- hello/mytest.lua
local M = {} -- 私有變量
local function test() print(123) end
function M.test1() test() end
function M.test2() M.test1(); M.test1() end
return M -- 關鍵
以下是導入此模塊的方法。
local MT = require "hello.mytest"
MT.test2()
Lua內(nèi)沒有類這個變量類型,但是通過Lua的metatable
可以輕松實現(xiàn)類的繼承,多態(tài)等等特性。關于Lua中類的實現(xiàn)原理,請參考我之前寫的這篇博客:Lua中實現(xiàn)類的原理。
更多建議: