gpt4 book ai didi

lua - 包含文件,覆盖变量

转载 作者:行者123 更新时间:2023-12-04 23:30:19 25 4
gpt4 key购买 nike

我试图通过在我的代码末尾要求第二个来覆盖我的第一个 .lua 文件中的变量。

文件1.lua

val = 1
require "file2"

文件2.lua

val = 2

不幸的是,这似乎不起作用,因为在此之后 val 仍然是 1。我想出的解决方案是一个新函数,允许这些文件的 future 潜在用户包含文件,我现在在初始化 Lua 时插入它:

function include(file)
dofile("path/since_dofile_doesnt_seem_to_use/package/path" .. file .. ".lua")
end

这完全符合预期,但由于我还是 Lua 的新手,我想知道是否有更好的解决方案。也许已经内置了一些东西?

更新:

我的问题是我不小心在多个文件上多次需要 file2,而 Lua 不会再次加载它来更改值。已解决。

最佳答案

Lua 在名为 package.loaded 的表中跟踪您在代码中需要的所有文件。每次 required 时,都会检查该表,如果表中已经存在模块名称,则不会加载它。如果表中不存在,则加载模块并将名称添加到表中。通过这种方式,您可以多次要求一个模块,但它只会在第一次运行。

您可以通过在 require 包之后设置 package.loaded[packagename] = nil 来解决这个问题。这样,当 lua 检查表中是否存在包名时,它不会找到它,因此您可以根据需要多次请求它。

关于lua - 包含文件,覆盖变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9286102/

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