Lua的Full UserData、Light UserData和metatable

http://lua.2524044.n2.nabble.com/LightUserData-and-metatables-td3807698.html

"... do you realize that by setting the metatable of a light userdata
you are actually setting the metatable of all light userdata at once ?"
I did not realise this. oops. 

设置Full UserData的metatable设置的是一个Full UserData实例的metatable。

设置Light UserData的metatable设置的是所有Light UserData实例的metatable。

时间: 2024-10-12 15:53:34

Lua的Full UserData、Light UserData和metatable的相关文章

Lua 与C/C++ 交互系列:Light userdata翻译

利用零碎的时间,先把以后用的知识点提前准备好.最近比较忙,正在准备一篇绑定C++对象到Lua中.但是,不想轻易下手,希望做足准备. 这篇翻译来自于lua-users.org   ,原文地址. Light User Data Light userdata, like heavy userdata, are a form of userdata, which is one of the basic data types in Lua .Light userdata are characterized

快速掌握Lua 5.3 —— userdata (1)

Q:什么是"userdata"? A:"userdata"分为两类,"full userdata"和"light userdata".Lua使用他们来表示C中一些特殊的类型.前面的章节中,我们看到了如何通过C编写新的函数来扩展Lua:使用"userdata",我们将可以通过C编写新的类新来扩展Lua. Q:两种"userdata"的区别? A: \ "full userdata

Lua 之 userdata

Lua 之 userdata 在Lua中可以通过自定义类型(user data)与C语言代码更高效.更灵活的交互,从而扩展Lua能够表达的类型. full userdata full userdata 表示一个原始的内存块,可以存储任何东西,它是一个类似于table的object,必须事先创建(也可以被垃圾收集器回收),它也有自己的metatable,它只等于其自身. 可以为每种full userdata 创建一个唯一的元表,来辨别不同类型的userdata,每当创建了一个userdata后,就

Lua_第27章 User-Defined Types in C

Lua_第27章  User-Defined Types in C 在上一章,我们讨论了如何使用 C 函数扩展 Lua 的功能,现在我们讨论如何使用 C 中新创建的类型来扩展 Lua.我们从一个小例子开始,本章后续部分将以这个小例子 为基础逐步加入 metamethods 等其他内容来介绍如何使用 C 中新类型扩展 Lua. 我们的例子涉及的类型非常简单,数字数组.这个例子的目的在于将目光集中到 API 问题上,所以不涉及复杂的算法.尽管例子中的类型很简单,但很多应用中都会用到这 种类型.一般情

Lua中Userdata类型源码实现

1.概述 Lua中userdata分两种,一种是轻量级userdata(light userdata),轻量级userdata是一种表示C指针的值,对Lua虚拟机来说,这种数据类型不需要GC(垃圾回收),其指向的内存由用户分配和释放,其实现就是一个void *p指针:后一种userdata类型完全userdata(full userdata),内存是由Lua虚拟机分配,并有GC机制负责处理.下面将通过Lua 5.2.1的源码来看后一种userdata的实现. 2.源码实现 userdata内存存

Lua中的userdata

[话从这里说起] 在我发表<Lua中的类型与值>这篇文章时,就有读者给我留言了,说:你应该好好总结一下Lua中的function和userdata类型.现在是时候总结了.对于function,我在<Lua中的函数>这篇文章中进行了总结,而这篇文章将会对Lua中的userdata进行仔细的总结.对于文章,大家如果有任何疑议,都可以在文章的下方给我留言,也可以关注我的新浪微博与我互动.学习,就要分享,我期待你的加入. [userdata是啥?] userdata是啥?简单直译就是用户数

lua元表Metatable

Lua 中的每个值都可以用一个 metatable. 这个 metatable 就是一个原始的 Lua table , 它用来定义原始值在特定操作下的行为. 你可以通过在 metatable 中的特定域设一些值来改变拥有这个 metatable 的值 的指定操作之行为. 举例来说,当一个非数字的值作加法操作的时候, Lua 会检查它的 metatable 中 "__add" 域中的是否有一个函数. 如果有这么一个函数的话,Lua 调用这个函数来执行一次加法. 我们叫 metatable

localStorage 以及UserData[IE6 IE7]是使用

说在前头: UserData:属于IE6 IE7的老东西,麻烦且体验差,暂且不表 localStorage 属于HTML5的东西,兼容IE8以及其他W3C标准的主流浏览器,所以尽可能的详细讲解 相关文档: 猎聘:http://www.css88.com/archives/3717 博客园:http://www.cnblogs.com/xiaowei0705/archive/2011/04/19/2021372.html 教程: 0---------------------------------

IE userData

IE浏览器实现了它专属的客户端存储机制--"userData".userData可以实现一定量的字符串数据存储,可以将其用做是Web存储的替代方案.本文将详细介绍IE userData 概述 在IE5.0中,微软通过一个自定义行为引入了持久化用户数据的概念.用户数据允许每个文档最多128KB数据,每个域名最多1MB数据 [注意]IE9+浏览器不支持 要使用持久化用户数据,首先必须如下所示,使用CSS在某个元素上指定userData行为 <div style="behav