参考链接:
系列链接: Lua语法(一)
系列链接: Lua语法(二)
系列链接: Lua语法(三)——元表与元方法
系列链接: Lua语法(四)——协程
系列链接: Lua语法(五)——垃圾回收
系列链接: Lua语法(六)——面相对象编程
Lua是一种轻量级的脚本语言,旨在嵌入应用程序中作为扩展语言使用。它由巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)的一组研究人员于1993年开发而成。
Lua的设计目标是提供一种简洁、高效、可嵌入和可扩展的脚本语言。它采用了简单的语法和动态类型系统,具有自动内存管理机制,以及一组基本的数据类型(包括nil、布尔、数字、字符串、表等)。Lua还支持面向对象编程、函数式编程和协同程序(coroutines),为开发者提供了很大的灵活性。
Lua可以被嵌入到其他主机语言(如C、C++、Java等)中,并通过提供简单的API接口进行交互。这使得开发者可以在自己的应用中使用Lua作为扩展语言,实现更高级的脚本功能,而不是使用繁琐的主机语言编写大量的代码。
Lua在游戏开发、嵌入式系统、网络编程、脚本扩展等方面得到了广泛应用。它的性能出色,具有较小的内存占用和快速的执行速度,因此在需要高效率和资源受限的环境中很受欢迎。
总的来说,Lua是一种简洁、轻量级、高效的脚本语言,非常适合用于嵌入式环境中,为应用程序提供灵活、可扩展的脚本功能。
1.Lua区分大小写,例如: and 和And不一样
2.Lua标识符和名称有字母、数字和下划线组成(不能用数字开头),下划线+大写字母通常被Lua用作特殊用途,避免将其用作其他用途
3.注释
单行注释:
-- print("hello,lua")
多行注释:
--[[
print("hello.lua")
--]]
小技巧——快速取消多行注释:
在多行注释的开头添加一个 - 可以让多行注释失效,从而取消多行注释
---[[
print("hello.lua")
--]]
lua语言有8种基本类型
nil 空
boolean 布尔
number 数值
string 字符串
userdata 用户数据
function 函数
thread 线程
table 表
print(type(nil))
print(type(true))
print(type(1.1*3))
print(type("hello lua"))
print(type(io.stdin))
print(type(print))
print(type(type))
print(type({
}))
print(type(type(X)))
--输出如下
nil
boolean
number
string
userdata
function
function
table
string
注:如果一个变量赋值给他nil,那么表示被销毁
加减乘除,取余,大于小于,略。
lua5.3新增方法:
相当于普通除法后向下取整
3//2 --输出1
3//2.0 --输出1.0
例如三角函数,取整,绝对值,平方等,略。
-- 例如:
math.sin(20)
--其中math.modf是取整函数,是向0取整,意思是不管这个数是正还是负,向0的方向取整
math.modf(-1.5) --输出-1
math.modf(1.5) --输出1
随机数也是数学库的函数,但是需要单独写,有注意事项
基本用法:
使用随机数前需要添加上随机数种子,否则输出的随机数是固定的。
-- 这里我写了两遍输出随机数,这可不是随便写的,是故意的,因为第一次的随机数是固定的,第二次才是随机的。有没有被坑到?
math.randomseed(os.time())
print(math.random(5))
print(math.random(5)) --意思是在1-5 这5个数之间随机取一个
--如果是 math.random(7,9)那么就是在7-9 这3个数之间随机取一个
这个也是属于数学库函数
math.maxinteger
--例如
string.sub("hello",1,1) --输出 h
--解释 string.sub(s,i,j) ,从字符串s中提取第i个到第j个字符,包含ij
--其中 ij可以为负数,表示倒数,例如-1表示倒数第一个字符,-2表示倒数第二个字符
string.sub("hello",2,-2) --输出 ell
----常用格式化----
%d 表示整数
%02d 表示 输出两位数,前面用0填充
%x 表示输出为16进制格式的整数
%f 表示输出为浮点数
%.4f 表示输出为小数部分有四位
%s 表示输出为字符串
d=5;m=8;y=1998
string.format("%02d/%02d/%04d",d,m,y) --输出05/08/1998
string.format("pi=%.4f",math.pi) --输出pi=3.1416
str="hello"
print(string.format("world %s",str)) --输出 world hello
print(string.format("x=%d y=%d",10,20)) --输出 x=10 y=20
string.find("hello world","wor") --输出 7 9 表示第7到第9个字符串
string.find("hello world","war") --输出 nil
-- 查找 l 字符, 用 . 替代,输出替换后的字符串,并且输出替换的个数
string.gsub("hello world","l",".") --输出 he..o wor.d 3
-- 查找 ll 字符,用 . 替代
string.gsub("hello world","ll","..") --输出 he..o world 1
string.gsub("hello world","ll",".") --输出 he.o world 1
string.rep("a",2^20) --返回一个 1MB 大小的全是a的字符串
string.rep("a",3) --返回字符串 "aaa"
str=string.rep(