Lua入门

基本类型

nil

type(val) == “nil”

布尔值

false和nil为false

0为true

number

双精度,表示所有数字

string

‘和”都可以表示字符串

[[]]可以表示一块字符串

+表示数学上的操作

..表示字符串上的操作

#表示字符串长度

table

可以是数组,也可以是字典

索引从1开始

function

可存在变量中

匿名函数

thread

线程和协程

userdata

自定义类型

struct和指针

变量

全局变量无需声明

变量全是全局变量,除非local声明为局部变量

局部变量作用域

同时赋值时,左右个数不匹配时会忽略or用nil补足

当table的索引为字符串时可用.操作符访问

多值赋值时仅值传递,不会变量传递

回收全局变量

循环

while … do … end

for i=begin, end, step do … end

begin, end, step一次性求值

pairs和ipairs:ipairs遇到nil则返回,ipairs从1开始遍历

未完

流程控制

if … then … end

if … then … else … end

函数

可有多个返回值

…表示可变参数

select(“#”,…) 来获取可变参数的数量

select(3,…) 表示从3开始到结束的所有参数列表

固定参数在变长参数前

运算符

//和/://表示整除,lua5.3后才有

..表示字符串拼接

#表示长度

运算符优先级

字符串

string.len

有中文用utf8.len

upper(), lower(), find(), reverse()

sub()

未完

数组

索引可为负数

迭代器

未完

table

当我们为 table a 并设置元素,然后将 a 赋值给 b,则 a 与 b 都指向同一个内存。如果 a 设置为 nil ,则 b 同样能访问 table 的元素。

table的操作

不能直接获得table的长度

模块和包

table创建模块

require调用模块