Lua学习(四)Lua的其他特性
目录
前言
Lua与其它语言一样能够实现一些重要的特性,比如多继承、私密性以及垃圾回收等。具体怎么实现让我们来深入认识一下。
一、Lua的多重继承
根据Lua的继承方式(通过元表中查找自己不存在的字段)进行理解,Lua的多继承无非是在多个table中查找某个字段。
首先来看一下查找函数:
print("____________Lua多重继承_______________")
function search(classes,key)
-- body
for i=1,#classes do
local value=classes[i][key]
if value ~=nil then
return value
end
end
end
local t1={name="zhangsan"}
local t2={game="Who"}
print(search({t1,t2},"game"))
代码分析:
这里的classes参数是一个table,table中存放了多个table,也就是要继承的类。key是我们要查找的字段。遍历所有的table,判断这个字段是否在某个table中,找到后返回。
执行结果:
创建一个继承多个table的表,代码如下:
print("__________________________________")
function creatClass( ... )
-- body
local parents={...}
--设置类的元素
local child={}
setmetatable(child,{__index=function (table ,key)
return search(parents,key)
-- body
end})
-