1.赋值语句
Lua中的赋值,直接使用赋值操作符,比如:
a = 30; // 单个赋值
a, b = 10, 30; // 多个赋值
a, b = b, a; // Lua中交换值时不要临时变量做中介,只需要直接赋值就行了
// 函数返回多个返回值
function someValue()
local a, b = 10,20;
return a, b;
end
print(someValue()); // 输出为:10,20
2.局部变量与块
Lua中有局部变量和全局变量,定义一个局部变量,只需要在变量名称前面添加关键字local
,不加local
修饰的变量均是全局变量。例如:
i = 10; // 全局变量
local j = i; // 局部变量
局部变量的作用域只在声明它的块儿内,比如一个局部变量只在函数内声明的话,退出函数时它就不能被访问了,当一个局部变量在循环中声明,如果循环结束,局部变量的生命周期就结束了。
(1)如果变量没有被赋值,会被自动赋值为nil
;
(2)如果赋值操作符的左边变量更多,那么多出来的变量会被自动赋值为nil
;
(3)如果赋值操作符的右边值更多,那么多余的值会被抛弃;
(4)如果需要在一段代码中插入一段代码可以使用块do...end
。例如:
if true then
do
local i = 10;
print(a);
end
end
3.控制语句
(1)if...then...elseif...else...end
Lua中没有C++/C中的条件判断语句switch
语句,但是可以使用if
语句代替。
local a, b, c = 10,20,30;
if (a > b) then
//...
elseif(a > c) then
//...
else
//...
end
(2)while
语句
Lua中的while
语句和其他语言的while
语句用法是一样的。
在C++/C中,while语句的写法如下:
// C++/C中
while(a < 5)
{
++a;
}
// Lua中,Lua中没有自增运算符++
while (a < 5) do
a = a + 1;
end
(3)repeat... until
Lua中的repeat
语句类似于do...while
语句,都是先执行一次,然后在判断条件是否满足。
local i = 0;
repeat
i = i +1;
print(i..", ");
until(i > 3)
// 输出为:1,2,3,4
和其他语言不同的是,repeat...until
中定义的局部变量作用域范围包括了until
中语句。
(4)for
Lua中的for
循环语句分成两种:数字for
循环和泛型for
循环。
1)数字for循环
表示从from到end,每次递增step,step不设置的话默认是1,
for var = from, end, step do
end
// form:开始,end:结束,step:步长
2)泛型for
循环
Lua库中为泛型for循环提供了几个迭代器函数:
io.line
:用于遍历每行;
pairs
: 用于遍历迭代table元素;
ipairs
:用于迭代数组元素;
string.gmatch
: 用于迭代字符串中的单词。
days = {"Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"};
for k, v in paris(days) do
print(v);
end
(5)break
和return
break
跳出当前块,return
结束当前函数,break
和return
只能在块中的最后一条语句,否则需要do...break...end
构造一个块。