寻求一个;“弱Lua注册表”;

寻求一个;“弱Lua注册表”;,lua,lua-api,Lua,Lua Api,有没有一种方法可以让C引用Lua5.2中的对象,除了这些引用很弱并且可能随时被垃圾收集之外,与您使用的方法相同?换句话说,是否存在不影响对象引用计数的所有当前Lua对象的注册表?您可以通过引入一级间接寻址来实现这一点-而不是将值直接存储在注册表中并强制其变弱,请执行以下操作: 创建一个表 通过设置元表{{uuu mode=“v”} 使用一些已知但唯一的键将此表存储在注册表中 将要跟踪的所有对象保留在此表中 使用存储在注册表中的此表而不是注册表本身来查找所有对象 请注意,没有“所有Lua对象的跟踪

有没有一种方法可以让C引用Lua5.2中的对象,除了这些引用很弱并且可能随时被垃圾收集之外,与您使用的方法相同?换句话说,是否存在不影响对象引用计数的所有当前Lua对象的注册表?

您可以通过引入一级间接寻址来实现这一点-而不是将值直接存储在注册表中并强制其变弱,请执行以下操作:

  • 创建一个表
  • 通过设置元表
    {{uuu mode=“v”}
  • 使用一些已知但唯一的键将此表存储在注册表中
  • 将要跟踪的所有对象保留在此表中
  • 使用存储在注册表中的此表而不是注册表本身来查找所有对象
  • 请注意,没有“所有Lua对象的跟踪”(如Ruby中),除非您使用一些重持久性,如。您只能访问自己存储/跟踪的对象