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

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时停止)

]=]

你可能感兴趣的:(Script(python,Lua,Javascript))