Lua Study
本文并不会把Lua语言的所有内容都包含在内,只对个人学习过程中感觉比较重要的部分做一个记录,以便回顾。
类型
学习语言首先要了解它提供的类型,Lua语言提供了如下几种。- nil
- boolean
- number
- string
- userdata
- function
- thread
- table
Lua中只有nil和boolean中的false视为条件(条件表达式中的条件)假,其他任何值都表示真。
number可以表示任何32位整数。
String表示不可变(immutable)的字符串,转义使用””符号,用..来连接字符串。
table是Lua唯一的数据结构机制。可以理解为Hash表加上可变长数组(不加键默认从1开始计数)。
talbe的两种存、取值方式1
2
3
4
5
6testTable = {
["a"] = "value1",
b = "value2"
}
testTable["a"]
testTable.b
function是“第一类值”,支持函数式编程。
表达式
- 数字常量
- 字面字符串
- 变量
- 操作符
- 算数操作符 “-“,”+”,”-“,”*”,”/“,”^”,”%”
- 关系操作符 “<”,”>”,”<=”,”>=”,”==”,”~=”
- 逻辑操作符 and,or,not
- 字符串连接 ..
- 函数调用
语句
do和end表示一个语句块1
2
3do
...
end数字型for
1
2
3
4b = {1,4,6,3,9}
for i=1, #b, 1 do
print(b[i])
end泛型for
for k,v in ipairs(a) do print(v) end
ipairs遍历数组,若使用pairs函数则遍历table中的所有的元素。- 函数
支持变长参数(用…表示),尾递归。函数的返回值可以有多个。o.foo(o, x)
等价于o:foo(x)
- 元表Metatable与元方法Meatmethod
待补充 - 协同程序coroutine
待补充 - 弱引用table
待补充