Lua自定义注册表和LUA_REGISTRYINDEX

时间:2014-09-15 13:50:46

标签: lua registry

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

  1. 是以任何方式在内部优化的lua_ref / LUA_REGISTRYINDEX,还是自定义解决方案同样快?
  2. LUA_REGISTRYINDEX是一个伪索引 - 我们可以以某种方式定义我们自己的吗?
  3. 在不同版本的Lua(包括LuaJIT)中,这两个问题的答案是否有所不同?

1 个答案:

答案 0 :(得分:1)

  

是以任何方式在内部优化的lua_ref / LUA_REGISTRYINDEX,还是自定义解决方案同样快?

除了注册表是一个可从任何C函数访问的特殊位置之外,它没有什么特别之处。 ((elemWidth == halfWidth) ? "" : "does not "及其同事并不特别。

  

LUA_REGISTRYINDEX是一个伪索引 - 我们可以以某种方式定义我们自己的吗?

没有。好吧,不是没有修改Lua本身。

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

如果这种限制对您有用,那么这应该足够好了。