Lua中实现默认值表的方法

本文介绍了在Lua编程中如何创建和使用默认值表,参考了《Lua程序设计》的相关内容,帮助开发者理解如何在定义表时设置默认值,提高代码的效率和可读性。
摘要由CSDN通过智能技术生成
-- 带有默认值的table
-- 1.给每个table设定个新metatable,  设置metatable的__index返回一个默认值d


function setDefault(t, d)
	setmetatable(t, {__index = function ()
						return d
					end})
end

-- 2.第一种方法会消耗大量的metatable,如果只使用一个metatable,会大大地优化,但是不同的table有
-- 不同的默认值,这种方法将默认值存储在各个table的自己域中
mt = {__index = function (t)
					return t.__
				end}
function setDefault(t, d)
	t.__ = d
	setmetatable(t, mt)
end

-- 3.因为涉及到table中域的唯一性问题,当然"__"域在实际使用中也算唯一,可以另外用一个key保证域的唯一性


mt = { __index = function (t)  return t[key]}


key = {}
function setDefault (t,d)
	t[key] = d          -- 使用key,保证域的唯一性
	setmetatable(t, mt)
end




-- 4.保证统一性,将各个table以及他们的默认值保存在一个公共的table中,不过这个table需要是weak tab
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值