Lua 注册表与轻用户数据和引用有什么区别?

2024-03-05

因此,使用 Lua C API,您可以在注册表中保存 Lua 值并在以后检索它。有不同的方法可以做到这一点,您可以创建一个变量并使用它的指针作为注册表中的键,因为它始终是唯一的。您可以将指针作为轻用户数据推送。

您还可以使用创建参考LuaL_ref(L, LUA_REGISTRYINDEX)。其中一种相对于另一种有什么优势?什么时候使用引用,什么时候使用指针?

还有引用,既然叫引用,那么如果Lua垃圾收集器收集到Lua值,注册表中的值会是nil?如果Lua更新了Lua值,注册表中的值是否也会改变呢?


Lua 注册表只是另一个 lua 表,可以通过预定义的“特殊”索引轻松访问。我想你不需要解释 Lua 表与轻量级用户数据有何不同。
只要您可以将该密钥存储在 C/C++ 端,如何索引注册表并不重要。为了您的方便,已经有函数(luaL_ref/luaL_unref)为您提供易于存储和移动的整数密钥。

关于垃圾收集 - 规则始终相同。只要值存储在未标记为弱表的表中(注册表不是弱表),该值就不会被清除。您必须从注册表中显式删除值。

改变值将遵循正常的 Lua 规则。为某些变量分配新的不可变值不会更改存储在注册表中的值,即注册表不会跟随某些变量的更新。但是更改可变值(表等)的内容是可以的,因为注册表和变量将引用相同的值。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Lua 注册表与轻用户数据和引用有什么区别? 的相关文章

  • C# 中两种不同类型的列表

    我目前在为客户提供购物车时遇到问题 他希望能够在 CartItems 之间添加文本 所以我想知道是否有某种方法仍然只有一个列表 我的解决方案是有两个列表 其中一个是 IList 类型 在计算购物车的重量和总体价格时会迭代 而另一个 ILis
  • 了解 VerQueryValue

    在 MSDN 上 我注意到 VerQueryValue 函数的以下内容 lplp缓冲区 输出 低电压空洞当此方法返回时 包含指向 pBlock 指向的缓冲区中所请求版本信息的指针的地址 当关联的 pBlock 内存被释放时 lplpBuff
  • C++:Linux平台上的线程同步场景

    我正在为 Linux 平台实现多线程 C 程序 其中我需要类似于 WaitForMultipleObjects 的功能 在搜索解决方案时 我发现有一些文章描述了如何在 Linux 中实现 WaitForMultipleObjects 功能
  • 如何从 webmethod 向 AJAX 调用返回异常?

    我回来了List
  • Debug.WriteLine() 未命中

    我正在调试 Windows 服务 通过点击F5在 Visual Studio 2010 中 使用以下代码 In 程序 cs file static void Main if Environment UserInteractive We ar
  • .NET:EventHandler 竞争条件修复如何工作?

    以下模式用于在引发事件时避免竞争条件 以防另一个线程取消订阅 MyEvent 使其为空 class MyClass public event EventHandler MyEvent public void F EventHandler h
  • MouseDoubleClick 事件不会冒泡

    我的场景经过简化 我有一个包含员工行的 ListView 在每个员工行中 都有 增加 和 减少 按钮来调整他的工资 假设在我的程序中 双击 员工 行意味着 解雇此人 The problem是当我快速单击 增加 时 这会触发 ListView
  • 等于方法实现助手 (C#)

    每次我编写一些数据类时 我通常都会花很多时间编写 IEquatable 实现 我写的最后一堂课是这样的 public class Polygon public Point Vertices get set 实施 IEquatable 是一项
  • C# While 循环与 For 循环?

    在 C 中 一个问题已经困扰我一段时间了 它的 While 和 For 循环之间的实际主要区别是什么 它只是纯粹的可读性吗 在 for 循环中本质上可以做的所有事情都可以在 while 循环中完成 只是在不同的地方 举这些例子 int nu
  • 关于 FirstOrDefault 或 SingleOrDefault

    FirstOrDefault 或 SingleOrDefault 将返回什么类型的数据 假设我的查询返回 3 条记录 例如 empid ename salary 1 joy 1500 2 rob 4500 3 jen 6500 所以如果我们
  • 如何使用 Linq to Sql 修剪值?

    在数据库中 我有一个名为 联系人 的表 名字和其他此类字符串字段设计为使用 Char 数据类型 不是我的数据库设计 我的对象 Contact 映射到属性中的字符串类型 如果我想做一个简单的测试 通过 id 检索 Contact 对象 我会这
  • OpenMP 和 C++:this 指针

    Is thisOpenMP 中始终共享指针 尽管编译器不会抱怨以下代码default none pragma omp parallel for default none shared n for SInt i 0 i lt n i f i
  • 如何在控制台程序中获取鼠标位置?

    如何在 Windows 控制台程序中用 C 获取鼠标单击位置 点击时返回鼠标位置的变量 我想用简单的文本命令绘制一个菜单 这样当有人点击时 游戏就会注册它并知道位置 我知道如何做我需要做的一切 除了单击时获取鼠标位置 您需要使用 Conso
  • 在 Ubuntu 16.04 上编译 PCL 1.7,CMake 生成的 Makefile 中出现错误

    我正在尝试让 PCL 1 7 点云库 而不是其他 pcl 在 Ubuntu 16 04 上运行 我最终希望用于 C 的东西 但现在我只是想让这些例子工作 我使用的是 Ubuntu GNU 5 3 1 附带的默认编译器和 Cmake 版本 3
  • 如何在 Lua - Lightroom 插件中使用 HMAC

    首先我要提的是我对 Lua 真的很陌生 如果你认为我的问题太愚蠢 请耐心等待 这是我的要求 我需要使用 HMAC sha256 进行 Lightroom 插件开发 因为我使用它是为了安全 我试图使用这个但没有运气https code goo
  • 使用客户端 hello 消息进行 TLS 协议检测

    我需要检测网络流量中的 https 数据包 到目前为止 我将所有 443 标记为 https 但我不想再在这种情况下使用端口信息 检查客户端问候消息是否足够 Check 22 and version info 0300 0301 or 03
  • 有没有办法将复选框列表绑定到 asp.net mvc 中的模型

    我在这里寻找一种快速简便的方法来在模型中发生回发时绑定复选框列表项的列表 显然现在常见的做法似乎是这样的form GetValues checkboxList 0 Contains true 这看起来很痛苦而且不太安全 有没有一种方法可以绑
  • 在 C# 中设置风扇速度

    我知道以前有人问过这个问题 但我似乎无法让它发挥作用 我已调用以下内容 using System Management using System Management Instrumentation using System Runtime
  • Image.Save 异常“GDI+ 中发生一般错误。”保存到 MemoryStream 时

    我有一个服务器客户端应用程序 我想从服务器获取屏幕截图 但在线bitmap Save ms System Drawing Imaging ImageFormat Png 我得到这个例外 A generic error occurred in
  • 创建进程的多个子进程并维护所有 PID 的共享数组

    我已经分叉了几次 并用 C 创建了一堆子进程 我想将它们所有的 PID 存储在一个共享数组中 PID 的顺序并不重要 例如 我创建了 32 个进程 我想要一个 32 个整数长的数组来存储每个 PID 并且每个进程都可以访问 最好的方法是什么

随机推荐

  • 用于本地主机上传和安装 WooCommerce 的 WordPress FTP 连接设置

    我无法上传 WooCommerce zip 文件并在本地主机上安装插件 每次我单击安装按钮时 WordPress 都会询问 FTP 凭据的连接信息 如下图所示 即使我输入 localhost 作为主机名 输入 admin 作为用户名 但它不
  • 如何删除存储库中的文件,同时在本地保留(和忽略)它们?

    我错误地将一些本地项目文件添加到 git 存储库并提交 推送它们 我想从远程存储库中删除这些文件 将它们保留在本地 并在将来的提交 推送中忽略它们 解决这个问题的最佳方法是什么 最干净的解决方案如下 git rm cached本地的额外文件
  • 如果使用 CreateResponse 扩展方法返回 Azure Function HttpResponseMessage,则执行测试时出错

    我的Azure功能代码如下 public static class MyHttpTriggerFunction public static async Task
  • PHP内容分离

    所以我们都知道 不仅在 PHP 中 您应该始终将代码与内容 设计 html 分开 我今天在这里看到有人说相反的 我的意思是 您不希望在更大的项目中使用其中之一 是吗 但是 将代码与内容分离的好方法是什么 我一直在使用一个简单的模板系统 主要
  • Angular2 中的 ViewChildren 装饰器可以与接口一起使用吗?

    我对 Angular 2 的理解是ViewChildren装饰器允许组件获取其他组件或指令的查询 当我知道组件的特定类型时 我可以让它在 Typescript 中工作 但我希望能够获得QueryList当我刚刚知道组件的接口时 这样 我就可
  • 如何提取大型文本文件中两个唯一单词之间的信息

    我有大约 150 个充满字符信息的文本文件 每个文件包含两个独特的单词 alpha 和 bravo 我想提取这些独特单词之间的文本并将其写入不同的文件 我可以手动按 CTRL F 组合这两个单词并复制它们之间的文本 我只是想知道如何使用程序
  • 将 Postgresql 与 Grails 一起使用:缺少序列或表:hibernate_sequence

    我在使用 Grails 2 0 和 Postgresql 9 1 时遇到问题 我正在尝试使用顺序 ID 映射现有数据库 但是 即使没有在域中创建任何类 我也会遇到错误 Compiling 1 source files Running Gra
  • 如何在 Liquid Haskell 中编写 log2 函数

    我正在尝试从 Liquid Haskell 学习book http ucsd progsys github io liquidhaskell tutorial book pdf 为了测试我的理解 我想写一个函数log2它接受 2 n 形式的
  • 让 GCC 优化手工组装

    试图让 GCC 不会每次生成加载 修改 存储操作 or 我定义了以下宏 define bset base offset mask bmanip set base offset mask define bclr base offset mas
  • Spring security 自定义身份验证过滤器,无需 web.xml

    使用注释和java配置 我不太清楚如何为spring security注册一个覆盖的过滤器 我想要实现的是自动登录而不显示登录表单 因为那时用户已经通过身份验证 因此 只会读取标头参数并使用 spring security 进行授权 这是我
  • 可以保留 ASIHTTPRequest 委托吗?

    保留子类的委托可以吗ASIHTTPRequest 我做了一个子类ASIHTTPRequest called JSONRequest 每个实例JSONRequest是它自己的委托 处理回调 并将它们传递给jsonDelegate 这是一个私有
  • 如何动态设置 JPA 标准查询的位置/命名参数?

    Hibernate 提供程序不会生成准备好的语句非字符串类型参数 除非它们设置为entityManager createQuery criteriaQuery setParameter Parameter p T t 默认情况下 如 Ecl
  • 在运行时绑定时,WPF UserControl 不会填充父容器

    我有一个带有 StackPanel 的窗口 并且 StackPanel 有一个 ContentControl 它在运行时获取绑定到它的 UserControl 在 MainWindow xaml 中
  • 测试 Mongoose Node.JS 应用程序

    我正在尝试为我的 Node 应用程序的部分内容编写单元测试 我正在使用 Mongoose 作为我的 ORM 我搜索了很多关于如何使用 Mongoose 和 Node 进行测试的信息 但没有找到任何内容 这些解决方案 框架似乎都是全栈的 或者
  • 使用 Jenkins 进行 Azure 配置

    作为 QA 管道 在 Jenkins 中 的一部分 目标是自动配置和配置虚拟机以运行 QA 测试 Jenkins 管道可以触发 Terraform 代码来自动配置 VM 和用于配置 VM 的 Ansible 代码 但是 诸如此类的问题rol
  • 使用 canvaskit 进行 Flutter Web 构建:无法加载 Image.network()

    I can t use the image URL from my domain but I can use the image URL from another domain like Facebook The error is 当将 S
  • 如何从 MySQL 表中的多个列中获取指定最小长度的所有不同单词?

    在 MySQL 5 6 数据库中我有表tablename其中有 包括其他 三个TEXT列 col a col b col c 我想从这三列中提取所有至少 5 个字符长的唯一单词 单词之间用空格分隔 我所说的 单词 是指任何非空格字符的字符串
  • 在故事板中重用 uiview xib

    我通常喜欢在界面生成器中创建和设计我的 uiview 有时我需要在 xib 中创建单个视图 该视图可以在故事板的多个视图控制器中重用 在故事板中重用并渲染 xib 使用 Swift 2 2 和 Xcode 7 3 1 进行测试 1 创建一个
  • 在 .NET 中打开 pdf

    在我们正在开发的应用程序中 我们正在尝试实现帮助 我们有一个 pdf 帮助文档 目前认为当用户单击帮助按钮时仅打开 pdf 是可以接受的 该应用程序是一个桌面应用程序 pdf 文件需要以某种方式包含在安装中并安装在本地计算机上 我本质上需要
  • Lua 注册表与轻用户数据和引用有什么区别?

    因此 使用 Lua C API 您可以在注册表中保存 Lua 值并在以后检索它 有不同的方法可以做到这一点 您可以创建一个变量并使用它的指针作为注册表中的键 因为它始终是唯一的 您可以将指针作为轻用户数据推送 您还可以使用创建参考LuaL