《Programming in Lua 3》读书笔记(三)
因为前段时间返校进行毕业论文答辩,就好久都没有更新博客了。毕业了,然后该干啥就干啥吧,毕业没有失业,应该小小的庆幸一番。
之前的第二篇读书笔记记录到了第二章的倒数第二点,剩下没有记录table相关。接触过Lua的朋友都说,很多时候Lua就是围绕着table在写东西,由此可见table的重要性吧。第二章大致的介绍了下Table的相关用法,在此记录一下。
2.5 Table
首先第一点要注意的是,Table的索引是非常灵活的,书中也介绍到了table不仅可以以下标index为索引,还可以使用除nil之外的Lua所支持的类型做为索引,所以这里体现出了其灵活性。
Table的形式:
a = {}
关于Table的一些用法:
a = {y = 10} --一个table,键=y,值=10 x = "y" -- --注意这里的索引方式,这里很容易混淆 print(a[x]) print(a.y) print(a["y"])
由上可以看出Table使用起来的灵活性,关于其索引方式我感觉有点容易混淆。在此我使用的一种很笨的方式:如果使用"[]"这种方式索引,那么"[]"里面的值就一定得是双引号下的键,可以是[y],或者x = "y";[x],如果使用"."这种方式索引,那么点号后面就直接是table的键。
可以使用"="将一个Table传递给另外一个变量(不知道这个到底该怎么说),如下:
a = {x = 10} b = a print(b.x) --10
这种语法的支持特性为灵活使用Table奠定了基础,关于这个知识点在后文还得复习一遍,该如何表述还不是很清楚。
当我们不需要某个table的时候,可以通过给其赋值nil来使系统自动回收内存,这里需注意:
a = {x = 10} b = a a = nil --在将nil赋值给a之后,系统回收a占用的内存,但此时b依旧可以使用,即可以使用b.x print(b.x) --10 print(a.x) --error
在使用Table的时候,不必要申请内存大小,只需要根据自己所需使用即可。
需要注意的是,假如我们使用数字为索引,Table是以1开始进行索引的。
得到table的长度的方法:#
2.6 Function
关于Function的知识后续内容有详细的介绍,大致觉得需要注意的是其返回值是可以有多个的,Lua支持调用用Lua写的函数和用C写的函数。
2.7 Userdata and Threads
这两点在第二章没有过多的介绍,提到了会在后续章节有详细的介绍,那就在后文在说吧。