访问类型元表Lua

很明显,getmetatable可以访问几种类型的元表:

getmetatable("")
getmetatable({})
getmetatable(newproxy(true))

但是,似乎无法获取其他类型(除了函数)的元表。似乎无法访问数字、布尔值或空值的元表。

我还想知道是否能够访问整个表类型的元表。能够做到这样的事情:

({}) + ({})

原文链接 https://stackoverflow.com/questions/3781816

点赞
stackoverflow用户11649
stackoverflow用户11649

从文档中:

表和完整的用户数据具有单独的元表(尽管多个表和用户数据可以共享它们的元表)。所有其他类型的值共享每个类型的单个元表;也就是说,所有数字都有一个单独的元表,所有字符串都有一个单独的元表,等等。

并没有“表类型元表”,就像没有“这个字符串的元表”一样。

字符串类型默认情况下具有“string”表作为元表;但是您可以使用debug.setmetatable()函数为其他类型设置元表。字符串等。

2010-09-23 21:11:51
stackoverflow用户282536
stackoverflow用户282536

默认情况下,数字、布尔值和 nil 没有元表(因此 getmetatable 返回 nil)。但是,您可以使用 debug.setmetatable 为它们设置元表。

没有公共的表元表。(至少对于 heavy 类型的用户数据也是如此)

2010-09-27 01:39:02