LUA
1) 全局变量不需要声明,给一个变量赋值后即创建了这个全局变量,访问一个没有初始化的全局变量也不会出错,只不过得到的结果是:nil.
使用local创建一个局部变量。
重复定义变量时,lua会创建一个全新的变量
2) 注释:单行注释:--
多行注释:--[-[ ]-],一般多行注释写为:--[[ --]],方便重新启用---[[ --]]
3) Lua是动态类型语言,变量不要类型定义。Lua中有8个基本类型分别为:nil、boolean、number、string、userdata、function、thread和table。函数type可以测试给定变量或者值的类型,print函数用于输出到标准输出stdout。
4) 表达式
算术运算符(+ - * / ^ (加减乘除幂))、关系运算符 (< > <= >= == ~=)、如果两个值具有不同的类型,lua就认为他们不相等,nil只与其自身相等
逻辑运算符(and or not)、连接运算符(..,如果操作数为数字,把数字和..之间加空格),%取模运算(a%b==a-math.floor(a/b)*b) -2.1%1 ==0.9 计算结果的符号永远与第二个参数相同
lua中只有nil和false为假,其它全为真
只能对两个数字或者是 两个字符串作大小性比较,其它类型的只能进行相等性或不等 性比较,否则报错
5) Lua可以对多个变量同时赋值,变量列表和值列表的各个元素用逗号分开,赋值语句右边的值会依次赋给左边的变量。a, b = 10, 2*x <--> a=10; b=2*x
6) 控制结构
if conditions then
then-part
elseif conditions then
then-part
else
else-part
end;
while condition do
statements;
end;
repeat
statements;
until conditions;
for有两种用法
for var=exp1,exp2,exp3 do
loop-part
end
for将用exp3作为step从exp1(初始值)到exp2(终止值),执行loop-part。其中exp3 可以省略,默认step=1
for i,v in ipairs(a) do print(v) end 迭代table可使用pairs,迭代数组 可使用ipairs
#可用于获取字符串长度,也可用于获取数组长度,table.maxn返回一个数组的最大正索引数
lua不支持switch
跳出循环,可使用break,return,Lua语法要求break和return只能出现在block的结 尾一句
for var=exp1,exp2,exp3 do
break //报错,可以显式的使用do..end包起来实现
loop-part
end
7) 函数
Lua函数可以返回多个结果值
Lua总是调整函数返回值的个数以适用调用环境,当作为独立的语句调用函数时,所有 返回值将被忽略
1. 当调用作为表达式最后一个参数或者仅有一个参数时,根据变量个数函数尽可能多地 返回多个值,不足补nil,超出舍去。
2. 其他情况下,函数调用仅返回第一个值(如果没有返回值为nil)
function foo2 () return 'a','b' end -- returns 2results
x,y =foo2() -- x='a', y='b'
x =foo2() -- x='a', 'b' isdiscarded
x,y,z =10,foo2() -- x=10, y='a',z='b'