lua - 访问 Lua 类型元表

标签 lua

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

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

但是,似乎您无法获取其他类型的元表(除了函数之外)。似乎无法访问数字、 bool 值或 nil 的元表。

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

({}) + ({})

最佳答案

字符串、数字、nil、函数和 lightuserdata 的整个类型都有一个元表。表和完整的用户数据每个实例都有一个元表。

来自文档:

Tables and full userdata have individual metatables (although multiple tables and userdata can share their metatables). Values of all other types share one single metatable per type; that is, there is one single metatable for all numbers, one for all strings, etc.strings, etc.

没有“表类型元表”,就像没有“此字符串的元表”一样

字符串类型默认将“string”表作为元表;但您可以使用 debug.setmetatable() function.strings 等设置其他类型的元表。

关于lua - 访问 Lua 类型元表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3781816/

相关文章:

c - 将 C 结构指针传递给 lua 脚本

lua - 寻找更清洁更有效的方式

lua - Corona SDK - 逐帧动画和加速度计问题

java - 将参数传递给 Lua 中的对象

lua - 如何执行 lua_pushstring 并避免内存不足 setjmp 异常

java - LuaJ中lua模块和基于元表的类的组合

LUA_MULTRET 没有按预期工作

转义字母的Lua模式匹配问题

lua - 我如何从 Defold 中的收集代理获取输入

lua - 如何从 C 运行 lua 脚本的多个实例