Lua语法(一)

参考链接:
系列链接: 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个数之间随机取一个
lua数值表示范围

这个也是属于数学库函数

math.maxinteger

四、字符串

字符串函数

字符串库
string.sub 截取一段
--例如
string.sub("hello",1,1)		--输出  h
--解释  string.sub(s,i,j) ,从字符串s中提取第i个到第j个字符,包含ij
--其中 ij可以为负数,表示倒数,例如-1表示倒数第一个字符,-2表示倒数第二个字符
string.sub("hello",2,-2)	--输出	ell
string.format 格式化字符串
----常用格式化----
%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 查找某个字符串在第几个位置,从1开始
string.find("hello world","wor")	--输出  7  9  表示第7到第9个字符串
string.find("hello world","war")	--输出 nil
string.gsub (Global SUBstitution)找到某个字符并替换为指定字符
-- 查找 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 重复某个字符串
string.rep("a",2^20)	--返回一个 1MB 大小的全是a的字符串
string.rep("a",3)		--返回字符串 "aaa"
string.len 返回该字符串的长度
str=string.rep(
  • 64
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值