lua 对象编程解读
假设要实现汽车类,一个标准的 lua 面向对象实现方式如下:
car.lua
复制代码
这里主要用到 lua 中的元表概念。每个 table 类型的数据都可以通过 setmetatable 方法设置元表。元表主要通过元方法修改 table 数据的行为。这里用到的是 __index 这个元方法。
例:
复制代码
如上例子中,如果要获取表 a 的 name 字段,a 本身是没有 name 字段的,就会搜索其元表中的 __index 元方法,如果 __index 的值为 table,就会从该 table 中搜索 name 字段,如果有 name 字段就获取其值,否则返回 nil
当然,__index 元方法也可以是一个函数,这样当获取 a 中不存在的字段时,就会调用该方法,并返回该方法的返回值,如果定义了的话。
版权声明: 本文为 InfoQ 作者【lockdown56】的原创文章。
原文链接:【http://xie.infoq.cn/article/e25df72b50366134459947bf3】。文章转载请联系作者。
评论 (1 条评论)