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

泛型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,慎用因为容易逻辑混乱

函数
全局函数
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
函数参数

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

返回值可任意且不对等
function get()
return "zhangsan",21
end
name=get()
print("Name",name)
_,age=get()避开第一个参数
print("Age",age)