说明:Lua学习笔记的内容都是《Lua程序设计.第二版》的读书笔记,笔记中很多内容都是来自于书中
1.Lua区分大小写;
2.Lua的8中基本类型:nil(空)、boolean(布尔)、number(数字)、string(字符串)、userdata(自定义类型)、 function(函数)、 thread(线程)、 table(表),使用type函数可以确定一个值的类型
1)nil用于区别其他值,用nil来删除全局变量和table中的元素
2)Lua的boolean 将nil和fasle视为”假”,包括0和空字符串都是为”真”
3.Lua的注释:
1)行注释为:
1 | --注释内容 |
2)块注释为:
1 2 3 | --[[ 注释内容 ]] |
3.字符串用””(双引号)、‘’(单引号)来包围,也可以使用
1 2 3 4 | [[ 行1 行2 ]] |
包围带格式的字符串,类似于python的
1 2 3 4 | ''' 行1 行2 ''' |
如果块中有包含]]可以使用在开头和结尾加上数量相同的等号,例如:
1 | ===[]=== |
这种方式同时适用于块注释
4. ..(两个点号)为Lua的字符串连接操作符 ,lua 5.1中, 在字符串前放置#(井号)来获得字符串长度(长度操作符(length operator))
5.table
1)table是lua中的唯一的重要的数据结构机制;
2)table没有固定大小;
3)table可以使用整数和其他类型的值来索引(除了nil);
4)通过key访问table的两种方式[]和. 例如 a[“b”] 和 a.b 是一样的
5)table 的创建,table构造式
例:
1 2 3 4 5 6 7 8 9 10 11 12 | a = {} a = {"one","two","three"} a = {x = 10, y = 20} -- 等价于a = {};a.x =10; a.y = 20 a["x"] = 10 a[10] = "great" --显式用一个表达式来初始化索引值: opnames = {["+"] = "add", ["-"]="sub", ["*"] = "mul", ["/"] = "div"} i = 20; s = "-" a = {[i+0] = s, [i + 1] = s..s, [i+2]=s..s..s} print(opnames[s]) --> sub print(a[22]) --> --- |
6)如果table中的某个元素没有被初始化则那个元素的值为nil
7)如果把table当作数组来用的话使用整数作为索引,与C语言不同索引从1开始,注:虽然可以访问0位置处的值,但是不计入table的长度,可能造成隐式的错误
1 | a = {[0] = "one","two","three"} |
8)如果table中有空隙即table中间的元素被赋值为nil 则#认为nil为table的结束标志从而导致计数错误,如果table 中没有空隙,使用#来统计长度,否则使用table.maxn来去的table的最大正索引//但是仍然不能处理多个空隙的情况,所以尽量避免把有空隙的table当作数组来使用
9)使用统一的索引方式来操作同一个table的,否则可能造成隐式的错误
10)table构造式创建table时,可以使用;(分号)来代替逗号来区分不同成分,最后一个元素的后面有个,(逗号)也不是错误
顺便做下广告 需要SSH,VPN的同学可以访问 http://www.sshops.net/
好文!到此一游,拍照留念 :V