it编程 > 前端脚本 > Lua

Lua教程(二十二):userdata

217人参与 2024-05-19 Lua

在lua中可以通过自定义类型的方式与c语言代码更高效、更灵活的交互。这里我们通过一个简单完整的示例来学习一下lua中userdata的使用方式。需要说明的是,该示例完全来自于programming in lua。其功能是用c程序实现一个lua的布尔数组,以提供程序的执行效率。见下面的代码和关键性注释。  


 
轻量级userdata:

  之前介绍的是full userdata,lua还提供了另一种轻量级userdata(light userdata)。事实上,轻量级userdata仅仅表示的是c指针的值,即(void*)。由于它只是一个值,所以不用创建。如果需要将一个轻量级userdata放入栈中,调用lua_pushlightuserdata即可。full userdata和light userdata之间最大的区别来自于相等性判断,对于一个full userdata,它只是与自身相等,而light userdata则表示为一个c指针,因此,它与所有表示同一指针的light userdata相等。再有就是light userdata不会受到垃圾收集器的管理,使用时就像一个普通的整型数字一样。

(0)
打赏 微信扫一扫 微信扫一扫

您想发表意见!!点此发布评论

推荐阅读

Redis教程(三):List数据类型

05-19

Redis教程(五):Set数据类型

05-19

lua中赋值类型代码详解

05-19

Lua中计算、执行字符串中Lua代码的方法

05-19

Lua5.1中加载dll动态链接库的方法

05-19

Linux下编写Lua扩展so文件和调用方法实例

05-19

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论