[学习笔记]lua学习笔记

lua是动态类型语言。这表示变量是没有类型的,只有值有。没有类型定义,所有的值有它们自己的类型。

所有的值在lua中都是first-class。这表示所有的值都可以储存在变量中,作为参数传递到方法中,作为结果返回。

lua有8种基本数据类型:nil, boolean, number, string, function, userdata, thread和table。
Nil是值nil的类型,Nil's main property is to be different from any other value;它
时常表示缺少有用的值。Boolean是值true和false的值.nil和false都表示条件否;别的任何值都表示条件是。Number
表示实数(双精度浮点数)。String是字符数组的类型。Lua is 8-bit clean: strings may contain any
8-bit character,including enbedded zeros('\0').

Lua可以调用使用Lua和C编写的函数。

userdata类型可以让任意的C语言数据储存在Lua变量中。这种类型和没有预先在Lua中定义或者操作的内存通信,除了声明和identity test。总之,利用metatables,程序员可以为userdata类型的值定义操作。userdata类型的值不能在Lua中被创建和修改,只有通过C语言的API来进行。这样就保证了主程序的数据的完整性。

thread类型, 独立的执行线程,用来实现coroutines(协同程序?)。不要把Lua线程和操作系统的进程搞混了,Lua即使在那些不支持多进行的操作系统中也支持多线程。

table类型联合arrays实现,也就是说arrays不仅可以被数值数据indexed,其他任何除了nil的数据类型的值都可以。Tables可以是heterogeneous, 也就是说,他们可以包括所有除了nil的值。Lua中的tables有特有的数据结构机制;
他们可以用在普通的数组,symbol tables, 集合,records, graphs, trees等等。用在records,Lua使用field name作为索引。The language supports this representation by providing a.name as syntactic sugar for a["name"].Lua中有很多方便的方式去创建tables.

tables中可以有function。

Tables, function, threads and userdata类型的值是对象:变量并不是实际的储存他们,而是以引用的方式指向他们。
附值,参数传递,返回值都是对引用的操作;这些操作都不依赖于任何形式的拷贝。

你可能感兴趣的:(多线程,数据结构,C++,c,lua)