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