1、lua允许多重赋值
a,b = 10, 2*x
2、交换x和y的值
x,y = y,x
3、如果多重赋值等号左边的变量名多余右边的值,则右边的少于左边的值会以nil代替,反之右边多余的值会被去掉
例如:
a,b,c = 0;
print(a,b,c)  – 0,nil,nil
a,b,c = 0,0,0
print(a,b,c)  – 0,0,0
4、一般多重赋值用来接收函数的2个返回值,比如:
a,b = f()
则a和b分别被赋值了函数f的返回值
5、全局变量和局部变量
j = 10 – 全局变量
local i = 1 – 局部变量
局部变量仅作用于声明它的那个块,一个块是一个程序体,例如下面,从while到end是一个程序块
x=10
local i =1
while i <= x
do
local x = i*2
print(x)
i = i + 1
end
6、显示的声明一个程序块
do
 local a = 1
 local b = 2
end
7、一个局部变量和局部变量同名的例子:
local a,b = 1,10
if a<b then
print(a)  – 1
local a
print(a)   –nil
end
print(a,b)   – 1  10
8、在lua中有一种书写习惯
local foo = foo
利用全局变量赋值给局部变量可以暂存全局变量而且会加速程序
9、if语句,lua不支持switch语句
if op == ‘+’ then
    r=a+b
elseif op == ‘-‘ then
    r=a-b
else
    r=a*b
end
10、while语句
如果条件为假则循环结束,否则一直执行下去
local i = 1
while a[i] do
    print(a[i])
    i = i + 1
end
11、repeat until至少执行循环一次
repeat
    line = io.read()
until line ~= “”
12、for循环
for var=exp1,exp2,exp3
    <执行体>
end
var从exp1变化到exp2,每次步长为exp3,exp3是可选的,默认为1
注意i是局部变量,所以在循环体外去读取循环变量会出现错误
例如
for i=1,10 do
print(i)
end
max = i  –错误!
13、for迭代器
a={x=1,y=2;3,4,5}
for i,v in ipairs(a) do
print(i,v)
end
这里将只叠代a表格数组部分,结果为
1 3
2 4
3 5
14、for迭代器2
a={x=1,y=2;3,4,5}
for i,v in pairs(a) do
print(i,v)
end
这里将叠代所有atable的key和value,结果为
1    3
2    4
3    5
y    2
x    1
15、return和break
break用于跳出循环
return用于跳出函数
16、一个简单的函数例子
function add(a)
    local sum=0
    for i,v in ipairs(a) do
        sum = sum + v
    end
    return sum
end
17、函数多重返回值
return a,b
这样就可以返回多个值
18、可以讲函数放入一个圆括号中,迫使它只返回一个值
19、unpack
x = {1,2,3,4}
print(unpack(x))
a,b,c,d = unpack(x)
print(a,b,c,d)
结果为:
1    2    3    4
1    2    3    4
20、变长参数
function add(…)
local s=0
local a,b = …  – 获得可变参数的前2个
print(a,b)
    for i,v in ipairs({…}) do
        s = s + v
    end
return s
end
print(add(3,4,10,25,12))
21、select选择器
select(‘#’, …) 返回可变参数的长度总数
select(i, …)  返回可变参数的第i个参数
22、当参数为一个table时,函数调用的圆括号是可有可无的
rename{old=”temp.lua”, new=”temp1.lua”}
23、异常try catch使用 pcall
local status, err = pcall(function() error({code=121}) end)
24、throw 异常使用error函数
function foo(str)
    if type(str) ~= “string” then
        error(“string expected”)
    end
…
end
25、print(debug.traceback())
独立的Lua解释器用来构建错误信息的函数就是debug.traceback。你可以在任何时候调用debug.traceback获取当前运行状况的跟踪信息