一 循环
一 循环处理方式
01 while 循环
- 语法
-- while 循环语法 --
while(condition) --条件
do
statements --循环语句体
end
- 实例
a=10
while(a < 20)
do
print("a 的值为:", a)
a = a+1
end
02 for 循环
a 数值 for 循环
- 数值 for 循环语法格式:
-- for 循环语法 --
for var=exp1, exp2, exp3 do
--<执行体>--
end
--[[
var 从 exp1 变化到 exp2, 每次变化以 exp3 为步长递增 var, 并执行一次"执行体". exp3 默认为 1
--]]
- 实例
for i=1,f(x) do
print(i)
end
for i=10,1,-1 do
print(i)
end
b 泛型 for 循环
- 泛型 for 循环语法格式
-- 打印数组a的所有值
a = {"one", "two", "three"}
for i, v in ipairs(a) do
print(i, v)
end
-- pairs 与 ipairs 两个迭代器的区别 --
--[[
1. pairs 遍历表中全部的key, value
2. ipairs 只能遍历所有数组下标的值 (迭代的下标从1开始)
① ipairs 在迭代过程中会跳过所有手动设定key值的变量
例如:
tab = {1, 2, a=nil, "d"}
for i,v in ipairs(tab) do
print(i, v)
end
输出结果:
1 1
2 2
3 d
② ipairs 在迭代过程中如果遇到 nil 是会直接停止
例如:
tab = {1, 2, a=nil, nil, "d"}
for i,v in ipairs(tab) do
print(i, v)
end
输出结果:
1 1
2 2
--]]
03 repeat…until 循环
- 语法格式:
repeat
statements
until( condition )
- 实例:
a = 10
repeat
print("a的值为:", a)
a = a + 1
until( a > 15)
--[[
a的值为: 10
a的值为: 11
a的值为: 12
a的值为: 13
a的值为: 14
a的值为: 15
--]]
04 循环嵌套
Lua 语言中允许循环中嵌入循环
二 循环控制语句
01 break 语句
a 语法
-- 语法格式
goto Label
-- Label 的格式
:: Label ::
b 实例
-- Example 1 --
local a = 1
::label:: print("---goto label---")
a = a+1
if a<3 then
goto label
end
-- Example 2 --
i = 0
::s1:: do
print(i)
i = i+1
end
if i>3 then
os.exit() -- i > 3 时退出
end
goto s1
-- Example 3 --
for i=1, 3 do
if i <= 2 then
print(i, "yes continue")
goto continue
end
print(i, "no continue")
::continue::
print([[i'm end]])
end
三 无限循环
条件永远为 true 循环语句就会永远执行
二 流程控制
一 if 语句
01 语法格式
if(布尔表达式)
then
--[[
在布尔表达式为 true 时执行的语句
--]]
end
02 实例
--[ 定义变量 --]
a = 10;
if(a < 20)
then
print("a < 20")
end
print("a =", a)
二 if…else 语句
01 语法格式
if(布尔表达式)
then
--[为真时--]
else
--[为假时--]
end