Lua脚本如何调用它没有导入的函数?

要清楚的是,这不是一个“我该怎么做X?”的问题,我很困惑X为什么不起作用。这是一个“哇,我做X,我不明白为什么做X能够工作”的问题。 我很新手学习脚本语言,我正在尝试为一个非常古老的游戏——哥特2的服务器编写一些脚本。不需要详细介绍,但我意识到我的脚本正在调用所有这些函数(我从服务器框架的维基页面复制粘贴的函数),而它们都在运行。我的脚本中没有“require X”的语句。 Lua解释器如何能够看到这些函数呢?

点赞
用户734069
用户734069

Lua 不像 Python 或者 C 或者其他语言,它的每个文件都几乎在自己独立的世界中,与其他文件的唯一连接是由显式请求创建的。在 Lua 中,除非表示该标识符的本地作用域中的任何标识符,否则该标识符就代表对全局环境表的访问。而且该表的工作方式与 Lua 中的任何其他表相同:您可以在该表中访问命名密钥。

因此,在执行 Lua 语句时,任何时候都可以使用在全局环境中可访问的任何值。

如果正在运行 Lua 脚本的 C 环境将一堆函数放入全局环境中,则运行的任何 Lua 脚本都可以访问它们。这可能就是该游戏中正在发生的情况。

2020-04-12 14:46:38