显然 getmetatable 可以访问几种类型的元表:
getmetatable("")
getmetatable({})
getmetatable(newproxy(true))
然而,似乎您无法获取其他类型的元表(除了函数)。似乎无法访问数字、布尔值或 nil 的元表。
我还想知道是否能够访问整个表类型的元表。为了能够做这样的事情:
({}) + ({})
字符串、数字、nil、函数和 lightuserdata 的整个类型都有一个元表。表和完整的用户数据每个实例都有一个元表。
来自文档:
表和完整的用户数据有
单独的元表(尽管
多个表和用户数据可以共享
他们的元表)。所有其他的值
每个类型共享一个元表
类型;也就是说,有一个
元表适用于所有数字,一个适用于所有数字
字符串等字符串等
没有“表类型元表”,就像没有“此字符串的元表”一样
字符串类型默认将 'string' 表作为元表;但您可以使用以下命令设置其他类型的元表debug.setmetatable()
函数.字符串等
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)