Lua基础教程之表(Table)学习笔记
表
a={}
b={x=1,["hello,"]="world!"}
a.astring="ni,hao!"
a[1]=100
a["atable"]=b
functionfoo()
end
functionbar()
end
a[foo]=bar
--分别穷举表a和b
fork,vinpairs(a)do
print(k,"=>",v)
end
print("----------------------------")
fork,vinpairs(b)do
print(k,"=>",v)
end
--输出结果 1 => 100 atable => table:003FB3A0 function:003FCBB0 => function:003FCBD0 astring => ni,hao! ---------------------------- hello, => world! x => 1
定义表(Table)的方式:a={},b={…}
访问表的成员:通过“.”或者“[]”运算符来访问表的成员。注意:表达式a.b等价于a[“b”],但不等价于a[b]
localb={"h",20}--《=》{[1]="h",[2]=20} 《=》localb={};b[1]="h";b[2]=20
locald={x=0,y=0} --《=》locald={};d.x=0;d.y=0《=》locald={};d["x"]=0;d["y"]=0
表项的键和值:任何类型的变量,除了nil,都可以做为表项的键。从简单的数值、字符串到复杂的函数、表等等都可以;同样,任何类型的变量,除了nil,都可以作为表项的值。给一个表项的值赋nil意味着从表中删除这一项,比如令a.b=nil,则把表a中键为“b”的项删除。如果访问一个不存在的表项,其值也是nil,比如有c=a.b,但表a中没有键为“b”的项,则c等于nil。
一种简单的对象实现方式
functionCreateStudent(ID,Name)
localObj={id=ID,name=Name};
functionObj:GetID()
returnself.id;
end
functionObj.GetName(self)
returnself.name;
end
functionObj:SetID(ID)
self.id=ID;
end
Obj.SetName=function(self,Name)
self.name=Name
end
returnObj;
end
s1=CreateStudent(1,"andy"); print("s1'id=",s1:GetID(),"s1'name=",s1.GetName(s1))
s1:SetID(2); s1.SetName(s1,"lili"); print("s1'id=",s1:GetID(),"s1'name=",s1:GetName())
--输出结果 --s1'id= 1 s1'name= andy --s1'id= 2 s1'name= lili