如果我有一个名为test1.lua的文件
function print_hi()
print("hi")
end
我希望将该函数用于另一个名为test2.lua的文件,我写道:
require 'test1'
function print_hi_and_bye()
print_hi()
print('bye')
end
但是,现在让我说我有一个名为test3.lua的第三个函数,我想要公开print_hi_and_bye()但不是print_hi()。如果我需要'test2',我将可以访问print_hi和print_hi_and_bye()函数。我如何绕过这个并将test1的本地函数保存到test2,以便其他任何东西都不会错误地使用它们?有没有办法用lua的加载工具来做这个,而不仅仅是通过重构代码?
由于
答案 0 :(得分:6)
您需要使test1.lua
个功能仅对请求它的人可见。为此,需要对文件test1.lua
和test2.lua
进行一些更改:
<强> test1.lua 强>
local pkg = {}
function pkg.print_hi()
print("hi")
end
return pkg
<强> test2.lua 强>
local m = require 'test1'
function print_hi_and_bye()
m.print_hi()
print('bye')
end
更改很少,现在您只能在您请求的文件中使用这些功能。
在Lua 5.1中,为方便起见,您可以使用test1.lua
中的module功能。
module("test1")
function print_hi()
print("hi")
end
在Lua 5.2中,此函数已弃用violated the design principles of Lua;相反,你应该如第一个例子所示。