Lua——基础语法整理学习

前言

现行的游戏开发中,多数公司都是采用Lua的方式进行热更新,本文旨在整理学学习Lua的基础语法。


Lua基础变量类型

Lua 是动态类型语言,变量不需要定义类型,只需要为变量赋值。Lua语言中的变量默认情况下是全局变量,所有的局部变量使用前必须声明local。Lua会根据变量赋的值来确定类型。在Lua语言中,变 量类型包括以下几种类型。

number 数值

在Lua语言中所有的小数和整数统归为number类型

  • tonumber : 显示的将字符串转成数字
  • math.random(n): 随机函数发生器,当n为nil时,返回[0,1)的伪随机数;当n为具体的数值时,返回[1,n]的伪随机数。通过调用math.randomseed(os.time())使用系统时间作为种子初始化随机函数发生器。
  • 取整函数,floor, ceil,和mode。其中floor向负无穷取整(向下取整),ceil向正无穷取整(向上取整),modf向零取整

string 字符串类型

在Lua语言中,字符串是不可变值,不能直接修改字符串,修改字符串的操作时本质上都是创建了新的字符串。通常使用单引号或者双引号来声明字符串常量。

  • 使用 #str 或者string.len(str)来获取字符串长度(实际上返回的是字符串占用的字节数)
  • 字符串连接符:两个点(…)print("Hello".."World")
  • 用一对儿方括号([[]])来声明多行字符串
  • string.format():格式化输出字符串string.format("x = %d y = %d",10,20) d代表一个十进制数,x代表一个十六进制数,f代表一个浮点数,s代表一个字符串
  • string.sub(str,i,j):从字符串s中提取第I到j个字符(包括I和j)该函数支持负数索引,最后一个字符为-1,倒数第二个为-2,依次类推。

模式匹配

  • string.find(str,target):返回匹配的目标字符串的开始的索引位置和结束的索引位置。如果没有找到任务匹配,则返回nil。
  • string.match(str,target):返回目标字符串中与目标字符串中相匹配的字符串。
  • string.gsub(str, target,macth):在目标字符串中,使用match字符串替换符合target模式的目标字符串。
  • 模式:使用百分号(%)作为转义
匹配格式含义
.任意字符
%a字母
%l小写字母
%u大写字母
%d数字
%w字母和数字
%c控制字符
%p标点符号
%g除空格外的可打印字符
%x16进制数字

重复修饰可选部分

符号含义
+重复一次或多次
*重复零次或多次
-重复零次或多次(最小匹配)
可选重复零次或一次

nil

nil是一种只有一个nil值的类型,它主要作用与其他所有值进行区分。Lua语言使用nil来表示无效值的情况。变量在没有被赋值之前的默认值就是nil,将nil赋值给变量相当于将其删除。

boolean

布尔类型,只有true和false两种值。一般用于常见的逻辑运算中,and、or 、not

  • and和or 都遵循短路求职原则,即只在有必要时才会对第二个操作数进行求职。虽然Lua本身没有提供三目运算符的语法,但是利用短路求职的原则我们也可以写类似的代码
x = x or v 
--等价于
if not x then
	x = v
end

table

表是Lua语言中最重要也是唯一的数据结构,Lua语言中的表的值要么是变量,都属于对象。用一对儿大括号声明一张表{}。Lua语言的表本质上是key-value键值对儿。

  • 使用数字作为索引就可以在Lua表中模拟实现数组,只不过在Lua的数组中,索引下标是从1开始
  • 使用pairs和ipairs可以遍历表,使用ipairs遍历表是需要确保Lua表必须是数组结构
  • table.insert():向指定的表中插入一个元素
  • table.remove():移除指定的表中指定位置的元素,并返回该元素

Lua中类型的获取

在Lua中使用type()方法可以获取变量类型:

number=1
print(type(number)) --> number
str="Learning Lua"
print(type(str)) -->string

Lua中的变量赋值

Lua 中可以同时为多个变量赋值,变量列表和值列表各个元素用逗号隔开,赋值语句右边的值会依次赋给左边的变量。变量个数>值的个数,按照变量个数补足nil;若变量个数<值的个数,多余的值直接被忽略

	a,b,c=1,2,3
	-- a=1,b=2,c=3,依次将1,2,3赋值给a,b,c
	```
	- 赋值时会先计算有边的值,然后在将右边的赋值给左边的变量
	```lua
	a,b=3,2
	a,b=b,a -->这一步会等价于a,b=2,3先将等号右边的值计算出,然后赋值给对应的变量
	print(a,b)
	输出结果:23

Lua 基本操作符

  • 算术运算符:+,-,*,/,//(整除,Lua5.3之后提供),^(乘幂),%(取余)
    x=x%0.01 --保留两位小数
  • 关系运算符:==,~=,>,>=,<,<=
  • 逻辑运算符:and 与,or 或,not 非
  • 连接运算符:数值连接 字符串连接
  • 参数收集:三个点(…):将多个参数收集到table表中
  • table.unpack(),将列表返回为参数,table.pack功能与之相反
a,b,c=table.unpack({10,20,30})

Lua基本语法

  • for 循环
for index=[start],[end] do
--循环执行的语句
end
  • while 循环
while condition do
-- 循环执行语句
end
  • repeat…until 循环,在lua 环境中repeat…until循环不同于for和while循环,它是在循环判断在当前循环结束后判断,类似于其它编程语言中的do…while循环
repeat
--循环体
until(condition) --循环结束判断条件。
  • function 定义函数
function Add(a,b)
	return a+b
end
ADD=function(a,b)
	return a+b
end
--两种方式等价
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值