美文网首页
lua-元表

lua-元表

作者: Teech | 来源:发表于2019-04-30 14:05 被阅读0次

看过lua的文档中有个说明,
“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.“
table和fulluserdata有独立的元表。其他类型每个类型共享一个metatable,比如numbers或者strings。

local mt = debug.getmetatable(0) or {}
--修改函数调用元方法
mt.__call = function(a,b)
    local t = {}
    for _=a,b do
        table.insert(t,_)
    end 
    return unpack(t)
end

debug.setmetatable(0,mt)
print((3)(5))   --输出3 4 5

由此可见number类型数据共享一个metatable,同理可以查看到字符串也共享一个metatable

local mt = debug.getmetatable("") or {}
mt.__call = function(a,b)
    return a .. b
end

debug.setmetatable("",mt)
print(("ab")("cd")) --输出abcd

相关文章

  • Lua-元表

    简介 模块库类似一个封装库,存放公用代码,以api接口形式被其他调用 元表 元表(metatable)提供两个ta...

  • Lua-元表

    元表Metatable Lua提供了元表,允许我们改变table的行为,每个行为关联了对应的元方法。 例如,使用元...

  • lua-元表

    看过lua的文档中有个说明,“Tables and full userdata have individual m...

  • lua-弱表

    弱表是是具有弱引用的表,如果只有弱引用,垃圾收集器会回收这些对象。弱表可以有弱键或者弱值,如果具有弱键,垃圾回收器...

  • lua metatable __nexindex方法

    __index元方法是访问,如果表中没有就会进元方法查找(如果有元表的话),如果元方法是表,返回元表的元素;如果元...

  • Lua-基础

    简介 学习Lua记录 数据类型 赋值 循环 函数 运算符 String 总结 参考 https://www.jia...

  • lua-简介

    cocos2d-x技术群新群:117871561c++技术交流群:593010226Lua 是一种轻量小巧的脚本语...

  • Lua中元表的学习

    Lua本身没有面向对象的思想,但是可以根据表、元表、元方法来靠近它 一、元表与元方法的概念Lua中每个值都可具有元...

  • Hive02

    外部表创建 外部表与内部表的区别:内部表 删除表 元数据和数据丢失、外部表 删除表 只删除元数据 数据依然存在 L...

  • Lua学习

    Lua 学习 元表 setmetatable(table,metatable): 对指定table设置元表(met...

网友评论

      本文标题:lua-元表

      本文链接:https://www.haomeiwen.com/subject/qozmnqtx.html