模块
2018-02-24 15:45 更新
模块
Lua中有一个叫module
的公有函数,此函数的作用是将一组变量和函数打包在一个模块名下,便于其他文件require
。但是这个函数受到了诸多的指责,原因是其会创建一个公共变量,并且这个公共变量中的所有细节都会暴露出来。这其实十分不符合面向对象的规范。
以下有一种办法可以避免这个问题,即不采用module
函数进行打包。
-- 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内没有类这个变量类型,但是通过Lua的metatable
可以轻松实现类的继承,多态等等特性。关于Lua中类的实现原理,请参考我之前写的这篇博客:Lua中实现类的原理。
以上内容是否对您有帮助:
← 作用域
更多建议: