为什么我们不需要使用“require”语句,但仍然能够使用内置函数?

在C语言中,我们使用#include语句,在C#中使用using语句以便能够附加其内置函数。但是在Lua中,我们不需要做任何事情,然后我们就可以使用coroutinetableio等。

点赞
用户3574628
用户3574628

Lua 解释器在运行程序之前通过调用 luaL_openlibs 将所有基本函数和库表导出给 Lua 程序。

编辑:

为什么不是所有语言都这么做?

这是一个权衡。如果一种语言默认暴露其整个标准库,它会节省我们很多样板代码。另一方面,它会污染命名空间、使用更多内存并增加启动时间。Lua 的标准库很小,所以它的成本并不高。大多数编译语言尽可能精简,因此我们需要明确地导入所有内容。

2019-08-21 15:57:07
用户1442917
用户1442917

这是因为Lua会为你“预导入”一些库。你可以重新配置你的Lua副本以加载不同的库。请参阅Lua发行版中的lualib.h文件,了解预加载的库列表。

2019-08-21 15:57:07