1. 多重赋值来交换两个变量
a[i], a[j] = a[j], a[i] -- 交换a[i]与a[j]
2. local foo = foo
创建一个局部变量foo,用全局变量foo初始化它。这样可以加速当前作用域中对foo的访问。而且如果后续函数改变全局foo的值,那么可以在这里先将它的值保存起来。
3. repeat-until
1. 测试在循环体之后做的,因此循环体至少执行一次。
2. 声明在循环体中的局部变量的作用域包括了测试条件。
repeat
local test = 1;
test = test + 1;
until test < 100 --此处仍能访问test
4. for
数字型for:
for i = 1; f(x) do print(i) end 默认以1递增,函数f(x)在循环前一次性求得。
for i = 10, 1, -1 do print(i) end 以-1递减,到i = 1结束。
泛型for:
io.lines:迭代文件中的每行
pairs:迭代table元素:for k in pairs(t) do print(k) end
ipairs:迭代数组元素:for i, v in ipairs(a) do print(v) end
string.gmatch:迭代字符串中的单词
注意:1. 循环变量是循环体的局部变量;2. 决不应该对循环变量做任何赋值。