Lua语法(一)

参考链接:
系列链接: Lua语法(一)
系列链接: Lua语法(二)
系列链接: Lua语法(三)——元表与元方法
系列链接: Lua语法(四)——协程
系列链接: Lua语法(五)——垃圾回收
系列链接: Lua语法(六)——面相对象编程

Lua语法目录

    • 简介
    • 正文
    • 语言基础
      • 一、语法规范
      • 二、类型和值
      • 三、数值运算
        • 数学库
        • 随机数
        • lua数值表示范围
      • 四、字符串
        • 字符串库
          • string.sub 截取一段
          • string.format 格式化字符串
          • string.find 查找某个字符串在第几个位置,从1开始
          • string.gsub (Global SUBstitution)找到某个字符并替换为指定字符
          • string.rep 重复某个字符串
          • string.len 返回该字符串的长度
          • string.reverse 字符串翻转
          • string.lower 将字符串转换成字母小写
          • string.upper 将字符串转换成字母大写
          • string.byte 与 string.char 互转字节和字符
        • utf8库
        • 1.字符串常量
        • 2.多行字符串
        • 3.字符串与数字的强制类型转换
      • 五、表
        • 表标准库
          • table.insert 插入
          • table.remove 删除某元素
          • table.move 移动元素
        • 1. 表构造器
        • 2.遍历表
      • 六、函数
        • 1.多返回值
        • 2. 可变长参数函数
        • 3.函数 table.pack
        • 4.函数 table.unpack
        • 5.尾递归调用
      • 七、控制结构
        • if ...else then ...end
        • while do
        • repeat...until
        • for 循环
      • 八、输入输出
        • io.write
        • io.read
        • io.lines
        • 简单IO模型
        • io.input输入流
        • io.output输出流
        • 完整IO模型
        • 文件I/O
        • io.open/io.close
      • 九、常见系统命令
        • os.rename
        • os.remove
        • os.getenv
        • os.execute("java -version")
        • io.popen

简介

  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

Lua语法(一)_第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

四、字符串

Lua语法(一)_第2张图片

字符串库
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(

你可能感兴趣的:(Lua语言,lua,开发语言)