【发布时间】:2020-07-25 00:05:13
【问题描述】:
要清楚,这不是我该怎么做X? ,我很困惑 X 不是工作问题。这是一个,哇,我在做 X,我不明白为什么做 X 工作有点问题。 我对脚本语言非常陌生,我正在尝试为一个非常古老的游戏 Gothic 2 的服务器制作一些脚本。无需详细说明,但我意识到我的脚本正在调用所有这些函数(我是从服务器框架的 wiki 页面复制粘贴),它们都只是运行。我的脚本中没有“require X”语句。 Lua 解释器如何看到这些函数?
【问题讨论】:
要清楚,这不是我该怎么做X? ,我很困惑 X 不是工作问题。这是一个,哇,我在做 X,我不明白为什么做 X 工作有点问题。 我对脚本语言非常陌生,我正在尝试为一个非常古老的游戏 Gothic 2 的服务器制作一些脚本。无需详细说明,但我意识到我的脚本正在调用所有这些函数(我是从服务器框架的 wiki 页面复制粘贴),它们都只是运行。我的脚本中没有“require X”语句。 Lua 解释器如何看到这些函数?
【问题讨论】:
Lua 不像 Python 或 C 或其他语言,其中每个文件都存在于自己的世界中,几乎与其他文件完全分开,文件之间的唯一连接是由显式请求创建的。在 Lua 中,任何不代表该标识符使用范围内的本地的标识符都表示对全局环境表的访问。该表的工作方式与 Lua 中的任何其他表一样:您可以访问该表中的命名键。
因此,在执行 Lua 语句时可通过该全局环境访问的任何值都可以在该语句中使用。
如果运行 Lua 脚本的 C 环境在全局环境中粘贴了一堆函数,那么它运行的任何 Lua 脚本都可以访问它们。这很可能是该游戏中正在发生的事情。
【讨论】: