Lua中元表以及元方法的使用

  • 元表的理解

在我看来元表就相当于是一个存放很多方法的一个table。它的value值就是对应的元方法,这里只是做一个简单的解释。

  • 元方法的使用

     1.__add 的简单使用方法

对两个table之间使用加法,加法的规则根据自己设置,我这里只是做一个简单的数值之间的加法示例:

function t()
	local mt = {}
	mt.__add = function(tbl_a,tbl_b)
		local tbl_new = {}
		for k,v in pairs(tbl_a) do 
			for i,j in pairs(tbl_b) do 
				if k == i and type(v) == type(0) and type(j) == type(0) then 
					tbl_new[k] = v + j
					break
				end
			end
		end
		return tbl_new
	end
	
	local tbl_a = {1,2,3}
	local tbl_b = {2,3,4}
	
	setmetatable(tbl_a,mt)
	setmetatable(tbl_b,mt)
	
	local tbl_c = tbl_a + tbl_b
	for k,v in pairs(tbl_c) do 
		print(v)
	end 
end

    2.__index元方法

__index顾名思义就是元表里面的搜索元方法,当在一个table中索引一个键值的找不到的时候,当添加了__index这个元方法就会

 在该方法的表格中进行搜索,相当于继承了__index对应的table。

function index_t()
	local mt = {["student"] = "hqyd",["teacher"] = "hqyd_teacher"}
	local tmp_tbl = {["student"] = "hqyd"}
	setmetatable(tmp_tbl,{__index=mt})

	print(tmp_tbl.teacher)
end

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值