Lua学习笔记五——metatable

metatable是元表的意思,在python中,有meta class,即元类,不管是元表还是元类,都是功能强大的,简单的来说,元类就是类的类,元表就是table的table。

下面看看元表的强大,利用table模拟list的加法操作:

 

定义列表table

  

其中list.mt是用来准备定义list的元表的

 

定义初始化函数

其中setmetatable(l_ls, list.mt)是设置list的元表

 

定义list的操作函数 

 

 

……

 

 

定义list的tostring方法,便于打印出人性化信息

 

 

定义list操作,相当于C++中的运算符重载

其中__add,做加法运算,__tostring会被print函数调用。另外还有:

__sub 减法 -

__mul 乘法 *

__div 除法 /

__unm 相反数 -

__mod 取模 %

__pow 乘幂 ^

__concat 连接操作 ..

__len 长度操作 #

__eq 相等 ==

__lt 小于 <

__le 小于等于 <=

不等于、大于、大于等于会用 ==, < , <=转换

 

__index 访问操作 table[key]

__newindex 赋值操作 table[key] = value

__call 调用操作 a = function xx() -- end  a()

 

调用示例

 

 

 

 元表是强大的,因为在你用它之前,它已经被设定过了……

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值