Chunks:
chunk解释为lua的语句执行范围,可以是一个语句或者一系列语句的组合。
命令行方式:
1、交互环境下运行lua,可使用lua命令行或者lua -i进入。也可使用dofile加载函数在lua交互模式下进行执行。
2、使用lua -e将命令传入lua。
3、使用lua -l加载一个文件。
类型和值:
1、lua主要是Nil、Boolean、 Number(实数)、String、Function(可作为变量赋值,函数参数,函数返回值)、Userdata与Threads中Userdata可以存放C的数据,Thread。
2、声明一个全局变量未赋值时为nil,删除一全局个变量可以将其赋值为nil。
表达式:
1、主要是运算符的优先级:幂、not,-负值、*,/、+,-、..、<,>,<=,>=,-=,==、and、or
2、lua的三元运算符,类似于C的a?b:c,lua的三元运算符格式为(a and b)or c。当b为false,无论a为何值,都返回c。当b为true时,a为true,返回b。a为false时,返回返回c。
3、table的构造,表内的元素可以非常灵活;使用table的构造函数,每次构造函数都会创建一个新的table这样可以用来实现list;不推荐数组下标从0开始。
局部变量与控制结构语句:
1、使用local创建一个局部变量,只在一个chunk或者一个block内有效。
2、一般控制结构语句if、do、while、for等需要一个end作为block的结束标识。
3、repeat until,重复 直到。
4、for的三个变量,var = exp1,epx2,epx3,一般默认epx3为1,解释为从exp1循环到epx2,每次增加epx3。
5、泛型for循环,可用来迭代循环函数的返回值、可用来遍历table。
函数:
1、函数可作为函数的参数,也可作为table的初始化函数。
2、函数的unpack方法作为泛型调用机制,实现可变参数。
3、函数的形参内使用...来表示可变参数,一一匹配实参,剩下的参数放入args内。
4、为了获得特定的参数,可以使用虚变量(_)。也可以使用可变参数...来实现。
闭包(匿名函数?lamb表达式)参考JS语言闭包:
1、函数名是一个指向函数的变量,可使用.指针来指向函数。
2、函数的简写,语法糖。内部匿名函数访问外部函数的变量称为词法定界,内部匿名函数变量称为外部的局部变量。引申出闭包是一个函数可以访问的外部的局部变量。
3、闭包使用在回调函数使用外部的局部变量时,类似于bind,可使用当前外部函数的变量。
非全局函数:
1、将函数保存在一个局部变量内,得到一个局部函数,其命名方式可以是将局部变量赋值给函数,也可以将函数修饰符为局部。
2、尾调用:在return 行添加尾调用,类似于goto,不会使用外部函数的栈,这样可以实现无限尾调用而不会栈溢出。要正确的使用尾调用。