if
单个if 分支
x=1if x>0 thenprint("x is a positive number")end
多个分支if
x=-1if x>0 thenprint("x is a positive number")elseprint("x is a negative number")end
输出结果
x is a negative number
elseif
a = -1if a > 0 thenprint("a is positive")elseif a <0 thenprint("a is negative")elseprint("a is zero")end
while
x = 1sum = 0while x<=100 dosum = sum+xx =x+1endprint(sum) -- 输出5050
repeat
执行repeat循环体后,直到util的条件为真才结束
repeatsum = sum + xx = x + 1until x > 100print(sum) -- 输出5050
for
sum = 0for i = 1, 100 dosum = sum + iendprint(sum) -- 输出5050
偶数相加
sum = 0for i = 0, 10,2 dosum = sum + iendprint(sum) -- 30
迭代器
a = {"a","b","c","d"}for i,v in ipairs(a) doprint("index=",i,"value=",v)end
Lua的基础库提供了ipairs和pairs,两者都能用来遍历集合。两个的区别是
pairs可以遍历集合中所有的key。
array={"a","b","c"}for k,v in pairs(array) doprint(k,v)end
打印结果是
1 a2 b3 c
ipairs仅仅遍历值,按照索引升序遍历,索引中断就停止遍历。遇到nil就退出,它只能遍历到集合中出现的第一个不是整数的key。
array={"a","b","c"}array[2]=nilfor k,v in ipairs(array) doprint(k,v)end
打印结果
1 a
自定义迭代
for 变量列表 in 迭代函数,状态变量,控制变量 do循环体end
1.调用迭代函数,把状态变量和控制变量当做参数传递给迭代函数,状态变量只会在第一次调用的时候赋值
2.如果迭代函数的返回值为nil,退出for循环。如果不是nil的话,把返回值赋值给变量列表,并执行循环体
eg
function square(state, control)if (state <= control) thenreturn nilelsecontrol = control + 1return control, control * controlendendfor i, j in square, 4, 0 doprint(i, j)end
打印结果
1 12 43 94 16
