作者回复: 👍 这些设计到 Lua 虚拟机指令,感兴趣的同学推荐看看张秀宏老师写的《自己动手实现Lua:虚拟机、编译器和标准库》
作者回复: 这是把 cjson 这个模块的 empty_array 函数,赋值给了 t 这个变量。在 Lua 中函数是一等公民,可以像变量一样使用
作者回复: 能否贴下具体的代码?给个 github 的 gist 地址就行
作者回复: 多谢反馈,已经修改:)
作者回复: 可以看 Lua 作者写的那本书,就是《Lua 程序设计》,里面专门有讲 weak table
作者回复: 是的,除非你在 do end 之前预定义了一个变量,比如:
local f
do
function f()
...
end
end -- do
作者回复: 其实上限是 256, 这个是 Lua 虚拟机的指令占用的大小决定的。超过 256 的话,Lua 虚拟机就不支持了。
作者回复: OpenResty 的 API 指的是lua-nginx-module和lua-resty-core提供的接口,都是 `ngx` 来头的;LuaJIT 的 API 是扩展了 Lua 内置的库,比如 `table.new` 这种