在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
Lua提供了一组传统的、小巧的控制结构,包括用于条件执行的if,用于迭代的while、repeat和for。所有的控制结构都有意个显式的终止符:if、for和while以end作为结尾,repeat以until作为结尾。 if a < 0 then a = 0 end if a < b then return a else return b end if line > MAXLINES then showpage() line = 0 end 若要编写嵌套的if,可以使用elseif。 if op == "+" then r = a + b elseif op == "-" then r = a - b elseif op == "*" then r = a * b elseif op == "/" then r = a / b else error("invalid operation") end 由于Lua不支持switch语句,所以这种一连串的if-else if代码很常见。 local i = 1 while a[i] do print(a[i]) i = i + 1 end 3. repeat -- 打印输入的第一行不为空的内容 repeat line = io.read() until line ~= "" print (line) 与其他大多数语言不同的是,在Lua中,一个声明在循环体中的局部变量的作用于包括了条件测试: local sqr = x/2 repeat sqr = (sqr + x/sqr)/2 local error = math.abs(sqr^2 - x) until error < x/10000 -- 在此仍可访问error 4. 数字型for(numeric for) for var=exp1,exp2,exp3 do <执行体> end var从exp1变化到exp2,每次变化都以exp3作为步长(step)递增var,并执行一次“执行体”。第三个表达式exp3是可选的,若不指定的话,Lua会将步长默认为1。以下是这种循环的一个典型示例: for i=1,f(x) do print(i) end for i=10,1,-1 do print(i) end 如果不想给循环设置上限的话,可以使用常量math.huge: for i=1,math.huge do if (0.3*i^3 - 20*i^2 - 500 >= 0) then print(i) break end end 5.泛型for(generic for) -- 打印数组a的所有值 for i,v in ipairs(a) do print(v) end Lua的基础库提供了ipairs,这时一个用于遍历数组的迭代其函数。在每次循环中,i会被赋予一个索引值,同时v被赋予一个对应于该索引的数组元素值。下面是另一个类似的示例,演示了如何遍历一个table中所有的key: -- 打印table t中所有的key for k in pairs(t) do print(k) end 标准库提供了几种迭代器,包括: |
请发表评论