引子 Lua table 探索
众所周知,lua table 初始化赋值一直是挺让人疑惑的。以下举一个例子(*部分知识参考《Lua设计与实现》)。
声明一个 table t 并初始化赋值后,打印 t[2] 可看到:

t[7] 为 321 符合预期,但 t[2] 不是 27 而是121。t[2] 为什么是 121 而不是 27,以下从源码角度进行分析。
为了更清晰地看到 lua vm 是如何解释运行的,我强烈建议搭建一个 lua 开发环境,以便调试查看源代码。
一、搭建 lua 开发环境
这一步十分简单,首先从官网上下载 lua 源码,然后打开 vs 创建一个 C++ 命令行程序,然后创建源文件、头文件,将下载好的 lua 源代码的所有 c 文件(去掉 lua.c 和 luac.c)放进工程的源文件目录下,将头文件放置工程的头文件目录下。此外,再创建一个 LuaDemo.cpp 和 main.lua 文件。如图所示:

其中,main.lua 文件如下:
print("===Start Lua===")
local t = {
26, [2] = 27, [7] = 321, 121, 9


1万+

被折叠的 条评论
为什么被折叠?



