Lua语言基础个人学习笔记
学习网址:http://www.runoob.com/lua/lua-tutorial.html
基本约定
- 脚本:要以xxx.lua命名,不用";"结尾,但是每一个语句要一行。
- 注释:单行–,多行–[[ ]]–
- 变量:不用声明(默认都是nil),可以直接赋值才会有类型。但是可以声明为local局部变量(默认为全局变量)
- 赋值:可以多个变量进行赋值,多则省去,少则nil补,而且赋值语句是先进行右边的才进行左边赋值,即交换两个变量直接 x,y=y,x
- 循环:1
.for var=exp1,exp2,exp3 do \n <执行体> \n end
( var 从 exp1 变化到 exp2,每次变化以 exp3 为步长递增 var)。2.while(conditon) \n do \n <执行体> \n end
3.repeat \n <执行体>\n until(conditon)
- 流程:
if(condition)\n then \n <执行体> \n end
- 函数:
function Name(parameter ···) \n function_body \n return values \n end
(可以返回多个值)
符号
- 运算符号:比较特别的是"^"(乘幂),其他都是四则运算那些。
- 其他符号:"…“用来连接两个字符串。”#"求一个字符串长度。
字符串
- 格式化:%c - 接受一个数字, 并将其转化为ASCII码表中对应的字符;%d - 接受一个数字并将其转化为有符号的整数格式;%f - 接受一个数字并将其转化为浮点数格式;
- 宽度数值和保留位数: %+一个浮点数,宽度数值为整数部分,保留位数为小数部分, 如浮点数转义符,%6.3f则设定该浮点数的占宽度数为6,浮点数小数只保留3位。
- 对齐标识: 在指定了字串宽度时, 默认为右对齐, 增加-号可以改为左对齐.
匹配模式
- 用于模式匹配函数 string.find, string.gmatch, string.gsub, string.match。
- .(点): 与任何字符配对;%a: 与任何字母配对;%c: 与任何控制符配对(例如\n);%d: 与任何数字配对;%l: 与任何小写字母配对;%p: 与任何标点(punctuation)配对;%s: 与空白字符配对;%u: 与任何大写字母配对;%w: 与任何字母/数字配对。(若大写字母则与原来相反效果, 例如, %A表示与任何非字母字符配对)
- [多个字符]:与任何[]中包含的字符类配对.。例如[%w_]与任何字母/数字, 或下划线符号”_“配对。 [^多个字符]: 与任何不包含在[]中的字符类配对。
- ‘%’ 用作特殊字符的转义字符,因此 ‘%.’ 匹配点;’%%’ 匹配字符 ‘%’。转义字符 '%'不仅可以用来转义特殊字符,还可以用于所有的非字母的字符。
- 模式条目:单个字符类跟一个
*
,-
都是将匹配零或多个该类的字符。不同的是*
匹配尽可能长的串,而-
匹配尽可能短的串;单个字符类跟一个+
, 将匹配一或更多个该类的字符。 这个条目总是匹配尽可能长的串; 单个字符类跟一个?
, 将匹配零或一个该类的字符。 只要有可能,它会匹配一个; - %bxy, 这里的 x 和 y 是两个明确的字符; 这个条目匹配以 x 开始 y 结束, 且其中 x 和 y 匹配是一对的。 意思是,如果从左到右读这个字符串,对每次读到一个 x 就 +1 ,读到一个 y 就 -1, 最终结束处的那个 y 记数为 0。 举个例子,条目 %b()可以匹配到括号平衡的表达式。
捕获
- 模式可以在内部用小括号括起一个子模式;这些子模式被称为捕获物。 其实就是根据一个模式从目标字符串中抽出匹配于该模式的内容。在指定捕获时,应将模式中需要捕获的部分写到一对圆括号中。如:string.match( “score = 120”, “(%a+)%s*=%s*(%d+)”) 那么%a+匹配到的就存放在1号捕获物里,%d+匹配到的就存放在2号捕获物里。
- %n, 这里的 n 可以从 1 到 9; 这个条目匹配一个等于 n 号捕获物的子串。
数组
- 在 Lua 数组索引值默认是以 1 为起始。但是赋值的时候索引可以自己规定,如:
array = {10}
print(array[1])
for i= -2, 2 do
array[i] = i
end
for i = -2,2 do
print(array[i])
end
那么一开始array[1]为10,后面输出为-2,-1,0,1,2;
表
- 表是 Lua 的一种数据结构用来帮助我们创建不同的数据类型,如:数组、字典等。但是表的索引是可以用其他任何值来规定的。如:
mytable = {"key1"=val1,1}
那么mytable[1]的值为1,mytable[“key1”]的值就为val1&#