Lua学习笔记(8): 元表

元表
Lua中提供了元表(Metatable),其实这个元表就比较像面向对象中的类了,可以通过给某些特殊的标识符赋值达到重载的效果,这些特殊的标识符有:

名称功能
__index元表的索引方法
__newindex新分配元素的下标
__add重载 ‘+’
__sub重载 ‘-’
__mul重载 ‘*’
__div重载 ‘/’
__mod重载 ‘%’
__unm重载 ‘-’ (一元运算)
__concat重载 ‘…’
__eq重载 ‘==’
__lt重载 ‘<’ 或 ‘>’
__le重载 ‘<=’ 或 ‘>=’

元表的创建方法

m_metatable = {}
m_table = {}
setmetatable(m_table, m_metatable)   --将m_metatable设置为m_table的元表
getmetatable(m_table)	--获得m_table的元表

关于__index的用法:

	m_metatable = {key1 = "hahahahah"} 
	m_table = {key2="2333"}
	setmetatable(m_table, m_metatable)
	setmetatable(m_table, {__index = getmetatable(m)table})
	print(m_table.key1)
	print(m_table.key2)

这段代码输出
hahahahah
2333
这是因为在使用索引访问表的时候,先去找这个索引是否存在于这个表里,如果没有再访问__index并把索引值传入,间接访问元表,所以数据如果放在元表里的话,表的键值不要和元表的键值重名

对元表的认识还不够清晰,待更

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值