源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

浅谈Lua语句

  • 时间:2021-08-22 14:43 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:浅谈Lua语句
Lua 中的语句支持赋值,控制结构,函数调用,还有变量声明。 不允许空的语句段,因此 ;; 是非法的。 [b]1 语句组 | chuncks[/b]
[u]复制代码[/u] 代码如下:
chunck ::= {stat[';']}
([';'] 应该是表示语句组后面 ; 是可选项。) [b]2 语句块 | blocks[/b]
[u]复制代码[/u] 代码如下:
block ::= chunck stat ::= do block end
可以将一个语句块显式地写成语句组,可以用于控制局部变量的作用范围。 [b]3 赋值 | assignment[/b] Lua 支持多重赋值。 多重赋值时,按序将右边的表达式的值赋值给左值。右值不足补 nil,右值多余舍弃。
[u]复制代码[/u] 代码如下:
b = 1 a,b = 4 -- a = 4,b = nil +++
Lua 在进行赋值操作时,会一次性把右边的表达式都计算出来后进行赋值。
[u]复制代码[/u] 代码如下:
i = 5 i,a[i] = i+1, 7 -- i = 6 ,a[5] = 7
特别地,有 x,y = y,x -- 交换 x,y 的值 +++ 对全局变量以及表的域的赋值操作含义可以在元表中更改。 [b]4 控制结构[/b] [b]4.1 条件语句[/b]
[u]复制代码[/u] 代码如下:
if [exp]     [block] elseif [exp]     [block] else     [block] end
[b]4.2 循环语句[/b]
[u]复制代码[/u] 代码如下:
while [exp]     [block] end +++ repeat     [block] until [exp]
注意,由于 repeat 语句到 until 还未结束,因此在 until 之后的表达式中可以使用 block 中定义的局部变量。 例如:
[u]复制代码[/u] 代码如下:
a = 1 c = 5 repeat     b = a + c     c = c * 2 until b > 20 print(c)            -->     40 +++
[b]4.3 break 和 return[/b] break 和 return 只能写在语句块的最后一句,如果实在需要写在语句块中间,那么就在两个关键词外面包围 do end 语句块。 do break end [b]5 For 循环[/b] for 循环的用法比较多,单独拎出来讲。 for 中的表达式会在循环开始前一次性求值,在循环过程中不再更新。 [b]5.1 数字形式[/b] for [Name] = [exp],[exp],[exp] do [block] end 三个 exp 分别代表初值,结束值,步进。exp 的值均需要是一个数字。 第三个 exp 默认为 1,可以省略。
[u]复制代码[/u] 代码如下:
a = 0 for i = 1,6,2 do     a = a + i end
等价于
[u]复制代码[/u] 代码如下:
int a = 0; for (int i = 1; i <= 6;i += 2){ // 取到等号,如果步进是负的,那么会取 i >= 6     a += i; }
[b]5.2 迭代器形式[/b] 迭代器形式输出一个表时,如果表中有函数,则输出的顺序及个数不确定(笔者测试得出的结果,具体原因未知)。 迭代器形式的 for 循环的实质 -- 依次返回 迭代器、状态表、迭代器初始值
[u]复制代码[/u] 代码如下:
function mypairs(t)     function iterator(t,i)         i = i + 1         i = t[i] and i      -- 如果 t[i] == nil 则 i = nil;否则 i = i         return i,t[i]     end     return iterator,t,0 end
-- 一个表 t = {[1]="1",[2]="2"} -- 迭代形式 for 语句的 等价形式
[u]复制代码[/u] 代码如下:
do local f, s, var = mypairs(t)     while true do         local var1, var2 = f(s, var)         var = var1         if var == nil then break end         -- for 循环中添加的语句         print(var1,var2)     end end
-- 迭代形式 for 语句
[u]复制代码[/u] 代码如下:
for var1,var2 in mypairs(t) do     print(var1,var2) end --> 1   1 --> 2   2 --> 1   1 --> 2   2
[b]5.2.1 数组形式[/b]
[u]复制代码[/u] 代码如下:
ary = {[1]=1,[2]=2,[5]=5} for i,v in ipairs(ary) do     print(v)                    --> 1 2 end
从1开始,直到数值型下标结束或者值为 nil 时结束。 [b]5.2.2 表遍历[/b]
[u]复制代码[/u] 代码如下:
table = {[1]=1,[2]=2,[5]=5} for k,v in pairs(table) do     print(v)                    --> 1 2 5 end
遍历整个表的键值对。 关于迭代器的更多内容,可参考Lua 迭代器和泛型 for。 以上所述就是本文的全部内容了,希望大家能够喜欢。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部