当前位置:  开发笔记 > 编程语言 > 正文

Lua绑定:table vs userdata

如何解决《Lua绑定:tablevsuserdata》经验,为你挑选了1个好方法。

在为C++类创建Lua绑定时,我应该返回表还是userdata对象?

有谁知道每种方法的优缺点?



1> 小智..:

我建议返回userdata.无论采用何种方法,都必须在某处将指针指向C++数据或实际的C++数据本身,并且使用表格无处可行.

返回表在某些情况下是有意义的,因为它们可以在Lua中使用额外的属性进行"注释",而无需为了支持这一点而做任何额外的操作.不幸的是,C++对象指针必须到达某个地方,并且除了表本身中的实际条目之外,它无处可去.

这不是一个非常安全的地方.它可以通过Lua代码找到,并删除或替换.这可能是偶然的,或者是故意的,这并不重要.

因此,我倾向于返回userdata对象.它们可以做出像表工作,如果人真的必须坚持在这一点,但他们也有一个"秘密"区域(实际用户数据本身),其中C++对象的指针可以存储,从Lua代码重写安全.

(使用用户数据对象也有一个"环境"指针,它是用于存储特定于对象的数据的另一地方.由于与用户数据有效载荷本身,此值是不可访问的Lua代码,并且可以不被损坏的方式.)

推荐阅读
linjiabin43
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有