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