首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    关于lua的一些浅析

    lua的table无疑是最最灵活的结构了,对象有属性和方法构成,我们用table描述对象的属性,lua的function用来表示方法,那么lua中的类通过table+function模拟出来,至于继承,metatable...lua中的metatable类似于c++中的虚函数,当索引table的项不存在时候,进一步索引metatable(得有设置元表)。...关于setmetable(table,metatable),【如果元表(metatable)中存在__metatable键值,setmetatable会失败】,这句话我第一眼看理解错了,意思是说如果这个表已经设置了元表...,而那个已经设置的原表中含有__metatable字段,那么在set别的元表就会报错,说白了使用__metatable就是保护元表,禁止用户访问元表中的成员或者修改元表,继承的使用就是利用setmetatable

    35240

    Lua:table与object

    然而当格式化一个对象的 时候,tostring 会首先检查对象是否存在一个带有__tostring 域的 metatable。...所以,raw方法就是忽略table对应的metatable,绕过metatable的行为约束,强制对原始表进行一次原始的操作,也就是一次不考虑元表的简单更新 Packages 基本方法 complex...注意一个小的优 化:我们不需要创建一个额外的表作为 account 对象的 metatable;我们可以用 Account 表本身作为 metatable: 面向对象new function Account...特别是,一个类不能同时是其实例的 metatable 又是自己的 metatable。...在下面的实现中,我们将一个类作为他的实例的 metatable,创建另一个表作为类的 metatable: local function search (k, plist) for i=1, table.getn

    31030
    领券