Lua语句

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)breakreturn
break跳出当前块,return结束当前函数,breakreturn只能在块中的最后一条语句,否则需要do...break...end构造一个块。

你可能感兴趣的:(lua)