Lua表如何工作

Ank*_*Ank 0 lua

我开始从Lua编程中学习Lua(第2版)我在书中不理解以下内容.它含糊不清地解释道.

一个.) w={x=0,y=0,label="console"}

湾) x={math.sin(0),math.sin(1),math.sin(2)}

C.) w[1]="another field"

d.) x.f=w

如) print (w["x"])

F.) print (w[1])

G.) print x.f[1]

当我做print(w[1])了.)之后,为什么不打印x=0

c.)做什么?

e.)和print (w.x)?有什么区别?

b.)和g.)的作用是什么?

Max*_* E. 11

你必须意识到这一点:

t = {3, 4, "eggplant"}
Run Code Online (Sandbox Code Playgroud)

与此相同:

t = {}
t[1] = 3
t[2] = 4
t[3] = "eggplant"
Run Code Online (Sandbox Code Playgroud)

这个:

t = {x = 0, y = 2}
Run Code Online (Sandbox Code Playgroud)

与此相同:

t = {}
t["x"] = 0
t["y"] = 2
Run Code Online (Sandbox Code Playgroud)

或这个:

t = {}
t.x = 0
t.y = 2
Run Code Online (Sandbox Code Playgroud)

在Lua中,表不仅仅是列表,它们是关联数组.

当你打印时w[1],真正重要的是c行.)实际上,w[1]直到c行才完全定义.).

e.)和print (w.x).之间没有区别.

b.)创建一个与之x分开的新表w.

d.)在w 内部x引用.(注意:它实际上并没有复制w,只是一个参考.如果你曾经使用指针,它是相似的.)

g.)可以分为两部分.首先我们得到的x.f是另一种引用方式,w因为d行.).然后我们查找该表的第一个元素,这是"another field"因为c行.)