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

[复制链接]
星空 发表于 2019-1-11 21:40:49 | 显示全部楼层 |阅读模式
在前面我们了解了lua的开发环境和lua中的基本数据类型和基本语法,在这里我们继续了解lua中的表结构。 , f% B0 }/ k0 e  F4 I
表是好多脚本语言都具有的一种数据类型,说它是一种类型,其实更确切的应说它是一种"数据结构"。 $ I0 V* q* @7 i1 n5 M7 _& s
    上午研究了lua中基本数据结构和基本语法,身心疲惫啊。表table是lua语言特有功能强大的东西。 * G8 v% h6 o" z0 x, @4 [$ V
研究了一下午终于了解了一点点了,在此记录以便以后查阅。 1 \& h$ S7 O# H& ^) M. A

( N3 ]' L+ I8 T+ j- n+ H) X1、定义表的方式
  t1 O" Z8 c% c/ s$ H
3 u2 B/ O' q! K# B3 |5 y' n! `最直接的构造器是{},用来创建空表。 ) @6 c, l+ M2 F) G% [& x4 [# a
例如: a={}; -- 定义一个表a - D  z+ ^# I1 o: U6 v
, Y3 k/ ?! z; N. `  R* X. C
2、访问表成员使用“.”或者“[]”运算符   M  r- r- P! j3 B9 _- c

7 h3 a( V- t0 @6 [a.x=0; -- 定义a表成员x的值为0
  H3 V$ {, O( k" M/ K" B, U' Ca.y=1; -- 定义a表成员y的值为1
* C4 Q1 J7 _0 q' D" [6 U# `a["z"]=0; -- 定义a表成员z的值为2 7 t. M$ A% B6 b) e; {/ o' R

" z7 c+ }9 c$ B! k3 q9 {( W3、打印表数据
2 a! h2 r; _: W8 c+ {
% q* b5 h" \/ O( lprint(a.x,a.y,a.z); 5 r( T# A8 R7 \3 }0 u/ f

lua学习之lua中的表table详解

lua学习之lua中的表table详解

  t3 n( s% A4 W0 a4 o
+ h, Z: [4 l0 Q9 q/ G4、表的另一种定义方式
) v$ N9 T" {4 r: v0 }) n; m3 Z. F" L
2 D! k7 S+ x& ^2 Q& H8 j! Q这里我们把刚刚的程序进行修改,直接在定义表的时候就添加表成员以及成员的值。
( s. [0 G1 U* d9 a8 q" Ub={x=0,y=1,["z"]=2}  -- 定义带元素的a表 ' j' ^/ l( Q/ {2 G
print(b["x"],b["y"],b["z"]);  -- 打印b表
/ v! n; V8 z# s( b$ c9 A2 P! L7 H

lua学习之lua中的表table详解

lua学习之lua中的表table详解

. Z' j& g  ~3 w+ B* T1 f5、使用表来定义数组   k' n4 m& F- _: g. ?& F" n" c8 n2 w
' o- Q4 Y3 S& R2 F8 g
c={"1","2","3","4","5"}   --定义数组并添加5个元素 8 p% U; c2 P( @) d- M
print(c[1],c[2],c[3],c[4],c[5]);   --打印数组 . F* J! ~% d  L2 r' O4 |; @2 b- [

lua学习之lua中的表table详解

lua学习之lua中的表table详解
. o  R2 a6 Q3 B4 K3 [) m. J/ G
6、复制修改c表为d表来对比打印c["1"]和d[1]的区别
8 ^( h8 g: o' k  y4 r7 L- X' U" a! y  z: ?9 j- M
d={"1","2","3","4","5"}   --定义数组并添加5个元素
/ s: I2 O& Q# T- ]print(d["1"],d["2"],d["3"],d["4"],d["5"]);   --打印数组 # n3 P( A$ G% [5 I$ A5 ^  k

lua学习之lua中的表table详解

lua学习之lua中的表table详解
. i, f2 e9 {1 T  C2 m$ p8 J
7.总结4,5,6的打印结果
/ D; n* a7 G' F9 K" J. G
# C7 D9 E4 c  K- P1 u' ~0 P注意:表达式a.b等价于a[“b”],但不等价于a$ y# r" a+ m: {5 {6 }' Q

& t' U% \- L; i- L8、表项的键和值
& `: e0 E* H. s  x6 ]- i- j( P* Y; v: G  V
任何类型的变量,除了nil,都可以做为表项的键。
! q/ S8 V. I7 o: S' K从简单的数值、字符串到复杂的函数、表等等都可以; 0 ?" N) L/ j1 W7 o0 Q3 L2 X8 H
同样,任何类型的变量,除了nil,都可以作为表项的值。
* o6 G; h/ x: O* k给一个表项的值赋nil意味着从表中删除这一项,比如令a.b = nil,则把表a中键为“b”的项删除。 9 k  Y' P& G2 i; p: a
如果访问一个不存在的表项,其值也是nil,比如有c = a.b,但表a中没有键为“b”的项,则c等于nil。
. N% M' g- U( o

lua学习之lua中的表table详解

lua学习之lua中的表table详解
  `/ [* F, |; T2 P

# k( R& o: H; v( m到此,我们对lua中表table大致有了一定的了解。
哎...今天够累的,签到来了游戏源码下载...
回复

使用道具 举报

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

本版积分规则