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

[复制链接]
星空 发表于 2019-1-11 21:40:49 | 显示全部楼层 |阅读模式
在前面我们了解了lua的开发环境和lua中的基本数据类型和基本语法,在这里我们继续了解lua中的表结构。 : v- i# ]" n/ ]2 a+ ^  S1 e5 R
表是好多脚本语言都具有的一种数据类型,说它是一种类型,其实更确切的应说它是一种"数据结构"。
6 u& f( a) A% p& f    上午研究了lua中基本数据结构和基本语法,身心疲惫啊。表table是lua语言特有功能强大的东西。
5 w8 `1 ^( b9 \, y( Q研究了一下午终于了解了一点点了,在此记录以便以后查阅。
) w$ L5 o' ~1 Y7 e( c# H* ?, i
1、定义表的方式
, J0 l+ ]" n* I* [, q
8 A' D8 W& V7 A最直接的构造器是{},用来创建空表。
" i' n, v/ F. i$ f' O; t0 n1 T例如: a={}; -- 定义一个表a . h2 p* q* J, ?5 J( G" N
. F' O! r5 ^! R2 P7 W6 A
2、访问表成员使用“.”或者“[]”运算符
: |+ S' s: A# b  p  s5 H- x) {3 L' j  ]0 X
a.x=0; -- 定义a表成员x的值为0 2 |1 S* |& p/ Q2 t) ?4 B: _
a.y=1; -- 定义a表成员y的值为1 5 u: T) f, ]  R" P: e
a["z"]=0; -- 定义a表成员z的值为2
* N1 V$ f' L" X1 z5 p0 W/ l7 e0 q7 X' u* @% m# U  ]
3、打印表数据
1 ^: |$ }" b% C; _! z
3 J" N: o7 Z/ o$ [1 ?  Vprint(a.x,a.y,a.z); . {0 R8 v5 H3 |8 W& D) L

lua学习之lua中的表table详解

lua学习之lua中的表table详解
5 W9 ]$ f) R& g1 S  N# z  [, }
: {* V5 d2 {1 K1 }' m; H
4、表的另一种定义方式 ; I. S$ f  N/ R, w. \' O' H* @. V

/ a0 E; Z6 D; _7 N; T; t! V7 F这里我们把刚刚的程序进行修改,直接在定义表的时候就添加表成员以及成员的值。 : D; x; \+ E2 W/ O6 H' e4 o3 I
b={x=0,y=1,["z"]=2}  -- 定义带元素的a表 * X! \' V; t) j3 M% ?9 w$ r5 Z2 Z
print(b["x"],b["y"],b["z"]);  -- 打印b表
( h. Z! }1 W  n$ g% }: c7 K

lua学习之lua中的表table详解

lua学习之lua中的表table详解

. }2 G& }+ n" q- a! ]5 ~, @5、使用表来定义数组 7 c$ }' `' J( O! |' H

$ g; T; x$ [$ N" W2 r+ Xc={"1","2","3","4","5"}   --定义数组并添加5个元素
( F( g. K8 h2 @2 G' T$ qprint(c[1],c[2],c[3],c[4],c[5]);   --打印数组
+ P9 @- B* H5 U! w3 C

lua学习之lua中的表table详解

lua学习之lua中的表table详解
! R! b  U& O+ z
6、复制修改c表为d表来对比打印c["1"]和d[1]的区别
' x. v% l. u- L+ k" G' u9 v& z+ a& P) ~- R, G# v  ]/ K
d={"1","2","3","4","5"}   --定义数组并添加5个元素 8 ^) V/ A! T! j8 p
print(d["1"],d["2"],d["3"],d["4"],d["5"]);   --打印数组 . m6 Q! g6 g  H9 R

lua学习之lua中的表table详解

lua学习之lua中的表table详解
* P7 g- P" i) Y1 r0 G, j; c+ z3 Z; `
7.总结4,5,6的打印结果
+ |5 L9 Z! G* I+ i. n+ [% @3 J, x! Z
注意:表达式a.b等价于a[“b”],但不等价于a: T6 z7 y% @6 M

9 ~2 F* z7 g6 f- @8、表项的键和值 7 J" B# \, ?7 P8 h$ e! C+ L. L: C$ l

' e$ @' x1 F1 v& S5 B. c/ ~任何类型的变量,除了nil,都可以做为表项的键。
1 e! M- n: E0 ?  S4 J/ g从简单的数值、字符串到复杂的函数、表等等都可以;
% f; ]0 w8 \- y  O/ x1 V! F. Q- s* {同样,任何类型的变量,除了nil,都可以作为表项的值。 # m) q6 d1 _- w9 s1 x
给一个表项的值赋nil意味着从表中删除这一项,比如令a.b = nil,则把表a中键为“b”的项删除。
: X, u% f7 u* t- I4 [如果访问一个不存在的表项,其值也是nil,比如有c = a.b,但表a中没有键为“b”的项,则c等于nil。
4 y3 n2 E! y7 m8 b7 h2 F

lua学习之lua中的表table详解

lua学习之lua中的表table详解
: G2 @, s( S* f5 V9 ?% ^/ w9 Q
0 S6 X$ |. p  E
到此,我们对lua中表table大致有了一定的了解。
哎...今天够累的,签到来了游戏源码下载...
回复

使用道具 举报

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

本版积分规则