[Lua]userdata

[Lua]userdata参考链接:https://www.cnblogs.com/herenzhiming/articles/6101767.html总结:1.定义userdata即用户自定义数据,它提供了一块内存区域,可以用来存储自定义的数据如下,lua_newuserdata会根据指定的大小分配一块内存,并将

大家好,欢迎来到IT知识分享网。[Lua]userdata"

参考链接:

https://www.cnblogs.com/herenzhiming/articles/6101767.html

 

总结:

1.定义

userdata即用户自定义数据,它提供了一块内存区域,可以用来存储自定义的数据

如下,lua_newuserdata会根据指定的大小分配一块内存,并将对应的userdata压入栈中,最后返回这个内存块的地址

void *lua_newuserdata(lua_State *L, size_t size);

 

2.元表

为了区别不同类型的用户自定义数据(userdata),可以为userdata设置元表,即每种类型的userdata都有对应类型的元表

如下,luaL_checkudata会检查栈中指定位置是否为一个userdata,并且是否具有与给定名称相匹配的元表

void *luaL_checkudata(lua_State *L, int index, const char *tname);

 

3.面向对象的访问

通过给userdata的元表设置__index元方法,即可实现userdata的面向对象

由于userdata本身没有key,所以当用key访问userdata时,就会去找元表中的__index

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/33095.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信