欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Lua学习记录 — (3)条件语句与循环语句

程序员文章站 2024-03-17 22:12:58
...

ConditionalAndLoopStatement.lua

------------------------------------ Lua条件语句 ------------------------------------

a,b,c = 0,1,nil

-- if 语句

if (a and b)
then
    print(a and b)                                      --> 1
end

if (b and c)    -- lua认为nil为false,此处返回nil
then
    print(b and c)
end

-- if else 语句(每一个条件后面都有一个then)

if (a and c)
then
    print(a and c)
else
    print(not(a and c))                             --> true
end

if (a and c)
then
    print(a and c)
elseif (b and c)
then
    print(b and c)
else
    print(not(a and c) and not(b and c))                --> true
end

-- if 嵌套语句

if a or c
then
    print ("a or c = true")                             --> a or c = true
    if c or b
    then
        print ("c or b = true")                         --> c or b = true
    end
end

--[=[

1. Lua认为false和nil为假;true和非nil为真;(即0也是真)
2. 在if语句(段)中定义的变量是不是局部变量,要看是否有local声明;

]=]


------------------------------------ Lua循环语句 ------------------------------------

-- while 循环

a = 0
while (a<5)
do
    print("a = " .. a)                                  --> a = 0/1/2/3/4
    a = a+1
end

-- for 循环(数值型 与 泛型)

for i=0,4   -- 数值型 1(从0到4,默认步长+1)
do
    print("i = " .. i)                                  --> i = 0/1/2/3/4
end
for i=4,0,-1    -- 数值型 2(从4到0,步长-1)
do
    print("i = " .. i)                                  --> i = 4/3/2/1/0
end
print(i)                                                --> nil(在for条件中创建的临时变量为局部的)

list_ = {key1 = "value1",key2 = "value2", 1,2,"value3"}

for i,v in ipairs(list_)    -- 泛型型
do
    print(i .. " : " .. v)                              --> 1 : 1 / 2 : 2 / 3 : value3
end

for k,v in pairs(list_)
do
    print(k .. " : " .. v)                              --> 1 : 1 / 2 : 2 / 3 : value3 / key2 : value2 / key1 : value1
end

-- repeat until

i = 0
repeat
    print("i = " .. i)                                  --> i = 0/1/2/3/4/5
    i = i+1
until(i > 5)

-- 嵌套循环
for i = 0,5
do
    while (i == 3)
    do
        j = 0
        repeat
            print("j = " .. j)                          --> j = 0/1/2/3/4/5
            j = j+1
        until(j>5)
        i = i+1
    end
end

-- break语句

while true
do
    print("这里使用break")                              --> 这里使用break
    break
end


-- 模拟continue(lua不存在continue语句)

for i=1,10
do
    while true
    do
        if i%2 > 0  -- 满足条件,跳出,即continue
        then
            break
        end
        -- 某些操作
        print(i)                                        --> 2/4/6/8/10
        break
    end
end

--[=[

1. pairs可以遍历list中的所有key,value;
   ipairs则只能遍历所有数组下标的值;(也就是说,会自动跳开key键值对)

2. ipairs从下标为1开始遍历,每次下标累加1,如果某个下标不存在则终止遍历,
   所以,如果下标不连续或者不是从1开始,则无法遍历所有元素;(即遇到nil时停止)

]=]
相关标签: lua