lua中的循环 while、for、repeat until三种循环方式、pairs和ipairs区别

lua中的循环 while、for、repeat until三种循环方式、pairs和ipairs区别

介绍

这里我用while、for、repeat until分别输出1-20之间的奇数 ,具体的语法可以看下面的代码

for循环

参数

定义一个初始值为startValue的i,并且i每次改变值是changeValue,直到i的值变为EndValue时执行完当次结束
如果for循环没有changeValue时,则默认changeValue为1,可以不写

csharp 复制代码
--不隐藏changeValue
for i = startValue, EndValue, changeValue do
      
end

--隐藏changeValue
for i = startValue, EndValue do

end

例子如下:

csharp 复制代码
for i = 1, 20 ,1 do
    if(i%2 == 1) then
        logError("i ============> "..i.."为奇数")
    end
end

for i = 1, 20 do
    if(i%2 == 1) then
        logError("i ============> "..i.."为奇数")
    end
end

打印如下:

ipairs和pairs

ipairs和pairs都是遍历表中数据,这两个的区别主要是pairs可以识别多种类型的键值对,但是ipairs只能识别数字为键的数据表。

下面是两种方式的打印,这里我们打印纯数字表、纯字符串表、纯boolean表以及多数据类型的表以及多类型key、value的表

打印纯数字表

csharp 复制代码
--测试表格1
local tabTest1 = {1,2,3,4,5}

--测试表格2
local tabTest2 = {1,2,"a",3,true}

--测试表格3
local tabTest3 = {"1str","2str","3str","4str","5str"}

--测试表格4
local tabTest4 = {true,false,true,false,false}

--测试表格5
local tabTest5 = {
    [1] = 10,
    ["a"] = "str",
    [true] = false,
    [2] = "asd",
}

for k,v in pairs(tabTest1) do
    logError("k=> "..tostring(k)..", v=> "..tostring(v))
end

for k,v in ipairs(tabTest1) do
    logError("k=> "..tostring(k)..", v=> "..tostring(v))
end


打印纯字符串类型的方式

csharp 复制代码
--测试表格1
local tabTest1 = {1,2,3,4,5}

--测试表格2
local tabTest2 = {1,2,"a",3,true}

--测试表格3
local tabTest3 = {"1str","2str","3str","4str","5str"}

--测试表格4
local tabTest4 = {true,false,true,false,false}

--测试表格5
local tabTest5 = {
    [1] = 10,
    ["a"] = "str",
    [true] = false,
    [2] = "asd",
}

for k,v in pairs(tabTest1) do
    logError("k=> "..tostring(k)..", v=> "..tostring(v))
end

for k,v in ipairs(tabTest1) do
    logError("k=> "..tostring(k)..", v=> "..tostring(v))
end


打印纯boolean表数据

csharp 复制代码
--测试表格1
local tabTest1 = {1,2,3,4,5}

--测试表格2
local tabTest2 = {1,2,"a",3,true}

--测试表格3
local tabTest3 = {"1str","2str","3str","4str","5str"}

--测试表格4
local tabTest4 = {true,false,true,false,false}

--测试表格5
local tabTest5 = {
    [1] = 10,
    ["a"] = "str",
    [true] = false,
    [2] = "asd",
}

for k,v in pairs(tabTest4) do
    logError("k=> "..tostring(k)..", v=> "..tostring(v))
end

for k,v in ipairs(tabTest4) do
    logError("k=> "..tostring(k)..", v=> "..tostring(v))
end

打印多类型值的表

csharp 复制代码
--测试表格1
local tabTest1 = {1,2,3,4,5}

--测试表格2
local tabTest2 = {1,2,"a",3,true}

--测试表格3
local tabTest3 = {"1str","2str","3str","4str","5str"}

--测试表格4
local tabTest4 = {true,false,true,false,false}

--测试表格5
local tabTest5 = {
    [1] = 10,
    ["a"] = "str",
    [true] = false,
    [2] = "asd",
}

for k,v in pairs(tabTest2) do
    logError("k=> "..tostring(k)..", v=> "..tostring(v))
end

for k,v in ipairs(tabTest2) do
    logError("k=> "..tostring(k)..", v=> "..tostring(v))
end


打印多类型键值对的表

csharp 复制代码
--测试表格1
local tabTest1 = {1,2,3,4,5}

--测试表格2
local tabTest2 = {1,2,"a",3,true}

--测试表格3
local tabTest3 = {"1str","2str","3str","4str","5str"}

--测试表格4
local tabTest4 = {true,false,true,false,false}

--测试表格5
local tabTest5 = {
    [1] = 10,
    ["a"] = "str",
    [true] = false,
    [2] = "asd",
}

for k,v in pairs(tabTest5) do
    logError("k=> "..tostring(k)..", v=> "..tostring(v))
end

for k,v in ipairs(tabTest5) do
    logError("k=> "..tostring(k)..", v=> "..tostring(v))
end

while

while就是根据后面的条件判定是否执行while内部的方法代码,condition 为判定条件,判定成功则走完这一边之后不在继续执行。

csharp 复制代码
--while condition do
--	  statements
--end

local a = 1
while(a <= 20) do 
    if(a%2 == 1) then
        logError("奇数=============>"..a)
    end
    a = a + 1
end

repeat until

repeat until判定条件在后置,所以当满足条件时不执行上述循环体代码

csharp 复制代码
--repeat
--	  循环体
--until(condition)

local a = 1
repeat 
    if(a%2 == 1) then
        logError("奇数=============>"..a)
    end
    a = a + 1
until(a > 20)

总结

while和for就是可以理解成前置条件语句,满足时执行完毕后不在继续执行。
repeat until理解为后置语句所以当满足条件时不执行。

相关推荐
慢慢沉1 天前
Lua(数据库访问)
开发语言·数据库·lua
慢慢沉1 天前
Lua协同程序(coroutine)
lua
慢慢沉2 天前
Lua元表(Metatable)
lua
慢慢沉3 天前
Lua(字符串)
开发语言·lua
慢慢沉3 天前
Lua(数组)
开发语言·lua
慢慢沉3 天前
Lua(迭代器)
开发语言·lua
慢慢沉3 天前
Lua基本语法
开发语言·lua
Feng.Lee3 天前
接口测试Postman工具高级使用技巧
功能测试·测试工具·lua·postman·可用性测试
三翼鸟数字化技术团队4 天前
鸿蒙平台运行Lua脚本
lua·harmonyos