lua元表

来源:互联网 发布:迪杰斯特拉算法 编辑:程序博客网 时间:2024/05/01 20:44

Lua中每个值都可具有元表。 元表是普通的Lua表,定义了原始值在某些特定操作下的行为。你可通过在值的原表中设置特定的字段来改变作用于该值的操作的某些行为特征。例如,当数字值作为加法的操作数时,Lua检查其元表中的"__add"字段是否有个函数。如果元表重载了该元方法,Lua则调用该加法。

setmetatable(只能用于table)和getmetatable(用于任何对象)

语法:setmetatable (table, metatable),对指定table设置元表metatable      【如果元表(metatable)中存在__metatable键值,setmetatable会失败】

语法:tmeta = getmetatable (tab),返回对象的元表(metatable)             【如果元表(metatable)中存在__metatable键值,当返回__metatable的值】


我们称元表中的键为事件(event),称值为元方法(metamethod)。前述例子中的事件是"add",元方法是执行加法的函数。

可通过函数getmetatable查询任何值的元表。

可通过函数setmetatable替换表的元表。不能从Lua中改变其他类型的元表(除了使用调试库);必须使用C API才能做到。

lua查找表元素过程:http://blog.csdn.net/xocoder/article/details/9028347

0 0