Lua循环和流程控制

顺便说一下lua不支持switch、case语法,所以多种情况的if then else比较常见。

1.if then else

a = 1
if a == 1 then 
    print("a==1")
else
    print("a!=1")
end

2.while

a = 10
while a > 0 do
    a = a - 1
end
print(a)        -->0

3.repeat

这个和C++的do while类似,区别是最后的条件是需要满足条件才退出循环,而do while是不满足条件退出循环。

a = 10
repeat
    a = a - 1
until a <= 0
print(a)        -->0

4.for

数值型for

--[[
    语法
    for var = exp1, exp2, exp3 do 
        something
    end
    exp2是循环上限,如果不想给循环设置上限,可以使用常量math.huge,内部使用break打破循环
    exp3是步长,若不写程序默认步长为1
]]--

a = {1,2,3,4,5,6,7,8,9,10}
for i = 1, #a do
    print(a[i])
end     -->1 2 3 4 5 6 7 8 9 10
for i = 1, #a, 2 do
    print(a[i])
end     -->1 3 5 7 9

泛型for
ipairs、pairs都属于泛型for,泛型for需要第一个nil循环终止,所以下面的由于a[3] = nil,只输出了前面两个索引。

a = {
    "Hello",
    "World",
    "!",
    "Lua",
    "!"
}
a[3] = nil
for k,v in ipairs(a) do      -->将会遍历表输出但是遍历过程中元素的出现顺序是随机的
    print(k,v)
end         -->Hello World

5.break

用于打破循环,使用方法同C++一致。

6.goto

使用方式同C++一致,主要是写法上有点区别。
label前后需要加双冒号。

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

7.continue

lua不提供continue语法,这里介绍一种简单的可以实现类似continue的功能。

for i=1, 3 do
    repeat
        if i==2 then
            break
        end
        print(i)
    until true
end
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容