lua语言理论及应用

Lua语言技术(其一)

动态脚本语言Lua:用标准C语言编写并开放了源代码。
其轻量小巧,与C/C++交互便捷,热更新友好,在游戏行业里都用它做逻辑层开发(通过Lua扩展自定义功能)
官网:Lua官方下载页面
配置环境变量cmd确认再从编辑器搜索下载lua插件即可编程
运行时再次导入Lua解释器.exe

语法

弱类型且后期可动态修改类型
全局变量eg:(注释是--)
a=1
b="hello"或者单引号'world'
c=true
d={1,2,3}--数组式table,元素类型可不一样(无原生数组且其索引是从1开始的!!)
print(#d)--#获取数组长度,print(d[#d])获取最后一项元素
e={name="wu",age=20}--键值对table,字典、对象等大多复杂数据类型都是基于table实现的(更灵活的键值对,动态的引用型)
表内的布尔型键、名字带-的键、复杂表键需要写成[true]、[a-b]、[{}]="xxx"
--也可批量赋值
a,b,c="hai",2,false
--输出
print("a",type(a))
局部变量:
do
local xx="hai"
print(xx)
end--加粗范围类是代码块
print(xx)
--结果:
hai
nil--代码块外局部变量越界为空

数组遍历(i为索引数,v为值)

按索引遍历
for i=1,#array do
print(array[i])
end
pairs遍历所有键值对,遇到nil会跳过
for i=1,v in pairs(array)do
print(i,v)
end
ipairs只遍历连续的数字索引,遇到nil会break
for i=1,v in ipairs(array)do
print(i,v)
end

表遍历(i为变量名,v为值)

用遍历所有键值对的pairs方法
for i,v in pairs(user)do
print(i,v)
print(user["name"])
end
不能靠#获取键的数量,需自己定义变量遍历

表动态性下的增删改

增:直接添加
删:user.age=nil
改:改已有的

引用赋值:t2=t1,修改t2会影响t1

流程控制

条件判断

--else
if scope>=60 then
print("及格")
else
print("不及格")
end
--elseif
if scope>=90 then
print("A")
elseif scope>=80 then
print("B")
elseif scope>=60 then
print("C")
else
print("D")
end

循环语句

while型
while 条件 do
...
end
数值for
屏幕截图 2026-07-07 201331
泛型for即pairs那套
repeat...until
先做后判断

流程跳转

lua没有continue得用~=(表示不等于)
for i=1,10 do--跳过第5个
if i==5 then
end
if i~=5 then
print(i)
end
结果是1 2 3 4 6 7 8 9 10
常用关键字
break结束循环,return返回值
流程跳转关键字goto,慎用因为容易逻辑混乱
屏幕截图 2026-07-07 202311

函数

全局函数

function add(a,b)
return a+b
end

局部函数

local function sum(a,b)
return a+b
end

赋值式定义(匿名函数,没有函数名)

local diff=function(a,b)
return a-b
end
--调用
local add=add(3,5)--8
local sum=sum(3,5)--8
local diff=diff(10,4)--6

函数参数

image

可变参数(select()的用法)

image

返回值可任意且不对等

function get()
return "zhangsan",21
end
name=get()
print("Name",name)
_,age=get()避开第一个参数
print("Age",age)

posted @ 2026-07-08 12:18  yankee_blog  阅读(1)  评论(0)    收藏  举报