如果我有一个名为test1.lua的文件
function print_hi()
print("hi")
end
Run Code Online (Sandbox Code Playgroud)
我想让函数可用于另一个名为test2.lua的文件,我写道:
require 'test1'
function print_hi_and_bye()
print_hi()
print('bye')
end
Run Code Online (Sandbox Code Playgroud)
但是,现在让我说我有一个名为test3.lua的第三个函数,我想要公开print_hi_and_bye()但不是print_hi().如果我需要'test2',我将可以访问print_hi和print_hi_and_bye()函数.我如何解决这个问题并将test1的本地函数保存到test2,以便其他任何东西都不会错误地使用它们?有没有办法用lua的加载工具来做这个,而不仅仅是通过重构代码?
谢谢
您只需要test1.lua为其请求的人员显示功能.为此,在文件中有一些变化test1.lua和test2.lua需要:
test1.lua
local pkg = {}
function pkg.print_hi()
print("hi")
end
return pkg
Run Code Online (Sandbox Code Playgroud)
test2.lua
local m = require 'test1'
function print_hi_and_bye()
m.print_hi()
print('bye')
end
Run Code Online (Sandbox Code Playgroud)
更改很少,现在您只能在请求它们的文件中使用这些功能.
在Lua 5.1中,您可以使用模块功能test1.lua以方便使用.
module("test1")
function print_hi()
print("hi")
end
Run Code Online (Sandbox Code Playgroud)
在Lua 5.2中,该函数被弃用,因为它违反了Lua的设计原则 ; 相反,你应该如第一个例子中所示.