1. Lua允许多重赋值,也就是一下子将多个值赋予多个变量,每个值或每个变量之间以逗号分隔。例如a, b = 10, 2*x。在多重赋值中,Lua先对等号右边的所有元素求值,然后才执行赋值。Lua总是会将等号右边值的个数调整到与左边变量的个数相一致。
2. 相对于全局变量,Lua还提供了局部变量。通过local语句来创建局部变量,与全局变量不同的是,局部变量的作用域仅限于声明他们的那个块。
3. 关键字do-end可以显示的定义一个块,每当输入do时,Lua就不会单独的执行后面每行的内容,而是直至遇到一个相应的end时,才会执行整个块的内容。
4. Lua中有一种习惯写法是:local foo = foo,这句代码创建了一个局部变量foo,并使用全局变量foo来初始化它。如果后续其他函数改变了全局foo的值,那么可以在这里先将它的值保存起来。这种方式还可以加速在当前作用域中对foo的访问。
5. if then else then end,while do end,repeat until
6. 与其他大多数语言不同的是,在Lua中,一个声明在循环体中的局部变量的作用域包括了条件测试。
7. 数字型for的语法如下:for var=exp1, exp2, exp3 do end。var从exp1变化到exp2,每次变化都以exp3作为步长递增var,exp3是可选的,若不指定的话,Lua会将步长默认设置为1。for的3个表达式是在循环开始前一次性求值的。其次,控制变量会被自动的声明为for语句的局部变量,并且仅在循环体内可见。break语句可以在for循环正常结束前终止循环。
8. 泛型for循环通过一个迭代器函数来遍历所有值:for i, v in ipairs(a) do print(v) end。Lua基础库提供了ipairs,这是一个用于遍历数组的迭代器函数。标准库提供了几种迭代器,包括用于迭代文件中每行的(io.lines)、迭代table元素的(pairs)、迭代数组元素的(ipairs)、迭代字符串中单词的(string.gmatch)等。
9. 由于语法构造的原因,break或return只能是一个块的最后一条语句。换句话说,它们应是程序块的最后一条语句,或者是end、else或until前的一条语句。如果希望在一个块的中间插入一句return或break,可以使用一个显示的do end块包住。
网友评论