【问题标题】:Lua, Require, Available FunctionsLua, Require, 可用函数
【发布时间】:2014-06-11 15:10:52
【问题描述】:

如果我在我的 Lua 脚本中 require 包含三个文件,那么这些文件中的任何一个函数都可以看到(最重要的是,调用)任何其他函数吗?

我遇到了函数调用函数调用其他函数的问题。我尝试将各种函数放在其他文件中,然后include它们而不是将它们写入主文件。

认为它起作用了,我的测试即使不是结论性的也是令人信服的。

我的主线代码是这样做的...

 require "SOME_REQUIRED_FILE_01"
 require "SOME_REQUIRED_FILE_02"
 require "SOME_REQUIRED_FILE_03"

 XYZ = 0

 File_02_Function_A()

我查看了The Lua Site 并找到了THIS PAGE,但我并不完全清楚。

所有三个必需文件中的EVERY函数能否查看所有三个文件中的EVERY OTHER函数? p>

【问题讨论】:

    标签: lua require


    【解决方案1】:

    requiredofile 基本相同,除了避免多次加载同一个文件的机制(以及一些其他有用的东西,如加载程序)。这意味着,他们也可以设置全局变量(尽管他们不应该)。因此,如果您在所需文件之一中设置全局变量,则可以在 require 函数的整个范围内看到全局变量。这意味着在其他必需的文件中也是如此。

    话虽如此,在required 文件中设置全局变量并不是最佳做法。最好返回一个包含模块导出的函数和变量的表。然后你会像这样调用这些函数:

    local some_required_file_01 = require "SOME_REQUIRED_FILE_01"
    local some_result_01 = some_required_file_01.some_function_01()
    

    【讨论】:

    • 第一个所需文件中的函数可以调用第三个所需文件中的函数吗?我的问题是函数调用尚未在执行中遇到的函数,导致函数调用到一个 nil 值。
    • 一般情况下是可以的,但是只有在第三个文件加载后才能调用。请注意,如果您遵循不设置任何全局变量的建议,也可以实现同样的效果。您可以在主文件中要求第三个文件,但您也可以在第一个文件中要求相同的文件并在本地调用函数。它更干净,并且需要确保您不会两次加载文件。
    • 谢谢,知道了。在您的答案上点击了两次。
    猜你喜欢
    • 1970-01-01
    • 2012-03-17
    • 2012-08-05
    • 1970-01-01
    • 2017-08-28
    • 1970-01-01
    • 2020-07-28
    • 2023-04-07
    • 2014-04-24
    相关资源
    最近更新 更多