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