gpt4 book ai didi

load - 你如何在 Lua 中加载本地包?

转载 作者:行者123 更新时间:2023-12-01 08:14:47 27 4
gpt4 key购买 nike

如果我有一个名为 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 的加载工具来做到这一点,而不仅仅是通过重构代码?

谢谢

最佳答案

你需要让 test1.lua 函数只对请求它的人可见。为此,需要对文件 test1.luatest2.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 中,你可以使用 module为方便起见,在 test1.lua 中运行。

module("test1")

function print_hi()
print("hi")
end

在 Lua 5.2 中,这个函数被弃用了 violated the design principles of Lua ;相反,您应该按照第一个示例中所示的方式进行操作。

关于load - 你如何在 Lua 中加载本地包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8842379/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com