《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

这两点在第二章没有过多的介绍,提到了会在后续章节有详细的介绍,那就在后文在说吧。

 

posted @ 2014-06-20 22:32  Le Ciel  阅读(162)  评论(0编辑  收藏  举报