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