[COCOS2D] lua学习之lua中的表table详解

[复制链接]
星空 发表于 2019-1-11 21:40:49 | 显示全部楼层 |阅读模式
在前面我们了解了lua的开发环境和lua中的基本数据类型和基本语法,在这里我们继续了解lua中的表结构。
" ]* k5 L2 \' k' _  t表是好多脚本语言都具有的一种数据类型,说它是一种类型,其实更确切的应说它是一种"数据结构"。
: X; h7 _6 @4 u    上午研究了lua中基本数据结构和基本语法,身心疲惫啊。表table是lua语言特有功能强大的东西。 % f, m4 S% S8 I* N8 o% ?; x
研究了一下午终于了解了一点点了,在此记录以便以后查阅。 4 _" E# ^5 o" s; X5 _: V
+ I5 s; L- [4 Q+ B1 d2 L
1、定义表的方式 . X( J) Q2 S2 {7 n# {" t

9 n) z4 I8 a2 t* u" ?最直接的构造器是{},用来创建空表。 * z( n/ {' b( B7 v3 K$ r" m
例如: a={}; -- 定义一个表a
, h/ Q, X$ s6 u' S8 m8 t
5 w; q' X( T7 r/ _7 q3 \, l, y2、访问表成员使用“.”或者“[]”运算符
& H( Y( h) t, a# j5 {% _
  Q. Q6 ~- W3 R3 ]& h  aa.x=0; -- 定义a表成员x的值为0
; @6 p( ~/ \1 d- V" ]1 U* W' ia.y=1; -- 定义a表成员y的值为1
2 V& N0 U8 o  T' m, v. Ga["z"]=0; -- 定义a表成员z的值为2 ; E2 _6 H' O; z& i  q/ P& l. v9 j

- U9 o  v& Z4 n9 W/ l. m" G( d% Z3、打印表数据   C, ~( ~: B4 l+ M# j$ a9 }

* b# m* D; t* X4 {& Z7 D) u/ vprint(a.x,a.y,a.z); ) K$ P' j2 z( h2 v/ w

lua学习之lua中的表table详解

lua学习之lua中的表table详解

7 q( L  f: b1 w# U+ u* a& Q
" _7 L7 j( W5 y* O5 r# ~3 m. B4、表的另一种定义方式
9 T9 q, |5 }  Q5 v' C
; d! t5 f$ h* T$ q" K5 h5 X这里我们把刚刚的程序进行修改,直接在定义表的时候就添加表成员以及成员的值。
/ O  D5 k' M9 a/ a$ T6 Ub={x=0,y=1,["z"]=2}  -- 定义带元素的a表   t; x- W5 U4 Q  O" s
print(b["x"],b["y"],b["z"]);  -- 打印b表 ; V) e& K9 n" p

lua学习之lua中的表table详解

lua学习之lua中的表table详解

8 O* F9 a# k6 O. `! u6 z  F3 y5、使用表来定义数组 ) l, O# W8 D6 N

& k! V5 x- A5 S$ c/ m' R  sc={"1","2","3","4","5"}   --定义数组并添加5个元素 / G, ?5 f! x, T* A% a+ K. e
print(c[1],c[2],c[3],c[4],c[5]);   --打印数组
' ^6 p# H! b4 O7 T! o; A

lua学习之lua中的表table详解

lua学习之lua中的表table详解
6 X0 T2 i" v  F$ R. i
6、复制修改c表为d表来对比打印c["1"]和d[1]的区别
/ A# m: ^4 b( [8 _( }& A) }1 \* I; U* Y
d={"1","2","3","4","5"}   --定义数组并添加5个元素
" }- U# D6 I  u/ l* g6 Oprint(d["1"],d["2"],d["3"],d["4"],d["5"]);   --打印数组 . h# [: G! u) L0 b( O9 m

lua学习之lua中的表table详解

lua学习之lua中的表table详解

- I) D! R0 X& S4 i+ V+ i5 Q5 E4 g7.总结4,5,6的打印结果
" m. o: V$ G0 q2 C, I- d$ K7 Q0 ]- z$ k+ }% f$ B
注意:表达式a.b等价于a[“b”],但不等价于a9 c8 w, Q# j6 x) l9 A4 Q
/ E$ `: a5 Q+ K. n1 }9 [
8、表项的键和值 $ O1 ]% o6 I/ @9 C# m1 o  O

  j0 X# n* {* H任何类型的变量,除了nil,都可以做为表项的键。
- t% ^7 T! y; d3 {* ?+ H从简单的数值、字符串到复杂的函数、表等等都可以;
3 o* r5 O, Y$ D( y7 x% {同样,任何类型的变量,除了nil,都可以作为表项的值。 ' r, @3 z, b4 |$ b5 }3 m
给一个表项的值赋nil意味着从表中删除这一项,比如令a.b = nil,则把表a中键为“b”的项删除。   j  O, W  `% }0 Z( L+ q% x
如果访问一个不存在的表项,其值也是nil,比如有c = a.b,但表a中没有键为“b”的项,则c等于nil。
0 @5 \$ k- m% k4 T# r1 F

lua学习之lua中的表table详解

lua学习之lua中的表table详解

- x+ x  v$ t$ d2 Q! h
$ X9 Z2 V& z) `. P) z# A  c+ l到此,我们对lua中表table大致有了一定的了解。
哎...今天够累的,签到来了游戏源码下载...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则