8. 分支判断:
-- 写法一
if (a > b) then ... end
-- 写法二
if (a > b) then ...
else ...
end
-- 写法三
if (a > b) then ...
elseif (a == b) then ...
else ...
end
-- 注意: 在Lua里面只有false和nil代表假,其他都是真,0也是真
if 0 then print("0 is true") end --输出: 0 is true
9. 循环:
-- 三种循环for,while,repeat
-- 一. for循环
for i = 1,10 do --i从1开始,到10结束,是闭区间,即[1,10],后面加一个do
print(i)
end
for i = 1,10,2 do --i从1开始,到10结束,步长为2
print(i)
end
for i = 10,i,-1 --i从10开始,到1结束,步长为-1
print(i)
end
--注意: 在for循环里面对i进行修改是没有作用的,解释器会默认for循环里面的i是local变量
-- 可以使用break来终止循环,Lua里面没有continue
for i = 1,10 do
print(i)
if i == 5 then break end
-- 实现类似i == 5时continue
-- if i == 5 then -- 这里什么都不做
-- else print(i)
-- end
end
-- 二. while循环
-- 当 while 的判断满足要求时就执行,否则跳出循环
-- while循环里面也是可以使用break来退出循环
local n = 10
while n > 1 do
-- if n == 5 then break end
print(n)
n = n - 1 -- 注意Lua里面没有前置后置--和++
end
-- 三. repeat循环,类似于do - while式循环,先执行代码块,再检查条件,为false时退出循环
repeat
-- 循环体代码
until ...
-- 基本用法
local i = 1
repeat
print(i)
i = i + 1
until i > 5
-- 输出: 1 2 3 4 5
-- 模拟continue
for i = 1, 5 do
repeat
if i == 3 then break end
print(i)
until true
end
-- 输出:1 2 4 5
local input
repeat
print("请输入一个大于 10 的数字:")
input = tonumber(io.read()) -- 读取用户输入
until input and input > 10 -- 直到输入有效才退出
print("你输入的是:", input)
-- 输出:
--[[
请输入一个大于 10 的数字:
5
请输入一个大于 10 的数字:
1
请输入一个大于 10 的数字:
10
请输入一个大于 10 的数字:
11
你输入的是: 11
]]
10. 字符串补充:
-- Lua里面的字符串类似于C里面的字符数组
s = string.char(0x30,0x31,0x32,0x33)
print(s) -- 输出: 0123
n = string.byte(s,2)
print(n) -- 输出: 49(1的ASCII码十进制值)
--Lua里面ASCII为0x00的值不是结束标志,就是0
s = string.char(0x00,0x30)
n = string.byte(s,1)
print(n) -- 输出: 0
最后 Lua 5.3 参考手册:Lua 5.3 参考手册