ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

LUA(初学)

2026/8/4 21:47:49 拓冰建站 浏览量
LUA(初学)

条件语句if

if then
end
local a = 2
if a < 6 thenprint(a)
end
2

条件语句if else

if then
else
end
local a = 2
local b = 3
if a > 6 thenprint(a)
elseprint(b)
end
3

while循环语句

while do
end
local a = 2
while  a < 5 doa = a + 1print(a)
end
3
4
5

for循环语句

for do
end
for a = 1,10,3 doprint(a)
end
1
4
7
10

repeat循环语句

repeat 
until
local a = 2
repeat a = a + 1print(a)
until a > 5
3
4
5
6

文本格式化

string.format
local a = 2
local b = 3
--local c = a.."*"..b.."="..(a * b)
local c = string.format("%d*%d=%d", a, b, a*b)
print(c)
2*3=6

循环控制 break/goto

1、跳出整个循环

break--结束
for a = 1,5 doif a == 3 thenbreakendprint(a)
end
1
2

2、跳出本次循环

goto--跳转到后面代号处
for a = 1,5 doif a == 3 thengoto abcendprint(a)::abc::
end
1
2
4
5

嵌套循环

for a = 1,9 dofor b = 1,a doio.write(string.format("%d*%d=%d ", a, b, a*b))endio.write("\n")
end
1*1=1 
2*1=2 2*2=4 
3*1=3 3*2=6 3*3=9 
4*1=4 4*2=8 4*3=12 4*4=16 
5*1=5 5*2=10 5*3=15 5*4=20 5*5=25 
6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 
7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 
8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 
9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81 

函数定义、调用

function
end
function say()print("say内容1")print("say内容2")
end
--不会输出,需要调用(让函数执行)
say()--调用
say()
say内容1
say内容2
say内容1
say内容2

函数参数

function
end
--参数(输入):函数执行之前的已知条件,给函数传递的数据
--返回值(输出):函数执行之后带回来的结果
function say(name)--()内叫参数列表print("你好,"..name.."博士")
end
say("大")
你好,大博士

return函数返回值

return--中止当前函数
function say(name)return("你好,"..name.."博士")--return后不能加东西,会报错
end
local a = say("小")
print (a)
你好,小博士

函数参数、返回值

function say(a,b)--多个参数以逗号分隔return a*b
end
local c = say(2,3)
local d = say(10,3)
print(c,d)
6	30
--[[使用print(a, b)这样的方式输出多个参数时,参数之间会自动用制表符(tab)分隔,而不是简单的空格。
这是Lua的print函数默认行为,它会自动在每个参数之间插入一个制表符(ASCII码为9)作为分隔符]]

函数计算斜边

math.sqrt--开平方
function hello(a,b)--直角三角形的两个边长度a,b,计算斜边local c = a*a+b*blocal d = math.sqrt(c)--开平方print(d)--return math.sqrt(a*a + b*b)--省两行
endhello(3,4)
--print(hello(3,4))
5.0

随机数

math.random--生成随机伪随机数
local num0 = 0
local num1 = 0
local num2 = 0
local num3 = 0
num0 = math.random()--生成0≤num<1的浮点伪随机数
num1 = math.random(5)--生成1≤num≤5的整数伪随机数
num2 = math.random(1,10)--生成1≤num≤10的整数伪随机数
num3 = math.random() * 50--生成0≤num<50的浮点伪随机数
print(num0)
print(num1)
print(num2)
print(num3)
0.84963174875401
5
1
31.14195529442

随机数种子

math.randomseed--设置随机数种子
math.randomseed(12345)--设置随机数种子
--math.randomseed(os.time)--使用当前时间(精确到秒)作为种子
--需要毫秒级的需要看平台接口
for i = 1 , 5 doprint(math.random())--打印5个随机数
end
--第一次输出
0.87460442174732
0.40364110609593
0.66623531969836
0.25568534734156
0.74194905034451
--清除后第二次输出
0.87460442174732
0.40364110609593
0.66623531969836
0.25568534734156
0.74194905034451

计算暴击伤害

function crit(val,bj)--val 伤害  ,bj  暴击率if math.random() < bj then--判断是否暴击return val * 2--暴击伤害增加2倍endreturn val
endlocal a = 100--基础伤害
local b = 0.2--暴击率for d = 1,5,1 dolocal c = crit(a,b)print("最终伤害:"..c)
end
最终伤害:200
最终伤害:200
最终伤害:100
最终伤害:100
最终伤害:200

函数多个返回值

function swap(a, b)return b, a
endlocal x, y = swap(1,2)
print(x, y)
2	1
function swap()return 2, 3
endlocal x, y = swap()
print(x, y)
2	3

函数不固定参数

function hello(...)--代表不固定有几个参数
function swap(...)for _, v in ipairs({...}) do--传进来的参数一个一个单独循环处理print("参数:" .. v)end
endswap(1, 2, 3, 7)--参数类型都支持的
swap("ha", "he")
```lua
参数:1
参数:2
参数:3
参数:7
参数:ha
参数:he

循环、遍历、迭代

循环(looping):重复执行某段代码,多次执行代码直到满足某个条件,常见循环结构(for、while、do while)

遍历(traversal):逐个访问一遍

迭代(iteration):一种特殊的遍历方式,在数组、列表、集合等中逐个访问元素(强调过程)

迭代----(过程)----》遍历----(原理)----》循环

获取当前文件目录

function hello(...)--代表不固定有几个参数
function swap(...)for _, v in ipairs({...}) do--传进来的参数一个一个单独循环处理print("参数:" .. v)end
endswap(1, 2, 3, 7)--参数类型都支持的
swap("ha", "he")
```lua
参数:1
参数:2
参数:3
参数:7
参数:ha
参数:he