Lua自定义注册表和LUA_REGISTRYINDEX

我需要模拟Lua的lua_ref注册表,但不能使用现有的解决方案。与此相关的两个问题:

  1. lua_ref / LUA_REGISTRYINDEX 在内部是否进行了优化,或者自定义解决方案是否同样快?
  2. LUA_REGISTRYINDEX是一个伪索引 - 我们能否定义自己的索引?
  3. 在不同版本的Lua(包括LuaJIT)中,这两个问题的答案是否不同?
点赞
用户734069
用户734069

除了注册表是任何 C 函数都可以访问的特殊位置外,它并没有什么特别之处。 luaL_ref 及其相关联的东西也不是特殊的。

LUA_REGISTRYINDEX 是一个伪索引——我们能否以某种方式定义自己的?

不行。除非修改 Lua 本身。

理论上,您可以使用上值,但是您注册的每个函数都有独立的上值。显然,它们都可以引用 相同 的表。但主要的问题是,这个表在注册的函数以外是不可见的。

如果这种限制对您来说是可行的,那么应该足够了。

2015-12-12 22:07:03