学习Lua脚本语言
创始人
2024-02-07 10:27:50
0

一、运行方式

Lua脚本的后缀名为 .lua。
运行该文件的代码时,只需在命令行键入 lua xx.lua 即可。

二、语法

1、数据类型

Lua 中包含 8 种基本数据类型,即:nil、boolean、number、string、userdata、function、thread 和 table。

数据类型说明
nil无效值,在条件表达式中表示 false
boolean布尔值,包含 true 和 false 两个值
number表示双精度类型的实浮点数
string表示字符串,通过双引号或单引号括住
userdata任意存储在变量中的 C 数据结构
function表示 C 或 Lua 编写的函数
thread执行的独立线程,用于执行协同程序
table一个关联数组,数组索引可以是数字或字符串
a=10
str = "hello world"

不需要声明变量类型,我们可以通过 type() 判断变量类型。

注意:

Lua 变量有三种类型:全局变量、局部变量和表中的域;

默认情况下,不管在哪声明的变量都是全局变量。通过 local 修饰的变量为局部变量;

变量默认值为 nil。

2 运算符

  1. 赋值运算符
str="hello".."world" -- 通过 .. 连接字符串
a,b=10,15 -- a=10,b=15
c,d,e=1,2 -- c=1,b=2,e=nil
  1. 逻辑运算符
print(true and false) -- 与
print(true or false) -- 或
print(not true) -- 非
  1. 其他运算符
操作符操作符
. .连接两个字符串
#返回字符串或表的长度,如 #“lua”

3 流程控制

-- if 语句
if(true)
thenprint("hello")
end
-- if .. else 语句
a,b=10,15
if(a>b)
thenprint(a)
elseprint(b)
end
-- if 嵌套
c=20
if(c>10)
thenif(c<30)thenprint(c)end
end
  1. 循环,有 4 种写法
while 循环	在条件为 true 时,让程序重复执行语句。
for 循环	重复执行指定语句,重复次数在 for 中控制。可以遍历数字和泛型。
repeat .. until	重复执行循环,直到指定条件为真为止。
循环嵌套	循环内嵌套多个循环语句。-- while 循环
a=10
while(a>0)
doprint(a)a=a-1
end
-- for 循环,遍历数字
for a=1,10,1 doprint(a)
end
-- repeat .. until 循环
a=10
repeatprint(a)a=a-1
until(a<1)
  1. 数组
    Lua 数组大小不固定且下标从 1 开始。
arr={"h","e","l","l","o"}
-- 此处使用遍历数字方式
for index=1,#arr doprint(arr[index])
end
-- 此处使用遍历泛型方式
for i,v in ipairs(arr) doprint(i,v)
end

4)函数

-- 案例 1
function calc(a,b,c)return a+b+c
end
result=calc(1,2,3)
print(result)
-- 案例 2
function getCalc(a,b,c)return a,b,c
end
r1,r2,r3=getCalc(1,2,3)
print(r1,r2,r3)

Lua 中的函数允许返回多个值。
5)table
table 是 Lua 中的一个数据结构,类似于 Java 中的 Map 类型或 Javascript 中的 JSON 对象。
Lua table 使用关联数组,我们可以使用任意类型值作为数组的索引,但不能是 nil。
Lua table 大小不固定。

person={}
person.name="jack"
person.age=20
print(person[1])
print(person.name)
print(person["age"])

6)模块和包
模块类似于一个封装库。从 Lua 5.1 开始,Lua 加入标准的模块管理机制,可以将一些公用的代码放在一个文件中,以 API 接口的形式在其他地方调用,有利于代码的重用和降低代码耦合。
Lua 的模块由变量、函数等已知元素组成的 table 。
例如:
创建名为 module.lua 的文件。

module={}
module.index=1
function module.sum(a,b)return a+b
end

另一个文件引入:

-- 此处 module 是文件名
require "module"
-- 此处 module 是引入模块中定义的名称
print(module.index)
print(module.sum(1,2))

相关内容

热门资讯

经典名言录 经典名言录  名言录  1、一寸光阴一寸金,寸金难买寸光阴。——中国谚语  2、浪费别人的时间是谋财...
感恩教师节名言警句 感恩教师节名言警句  在平时的学习、工作或生活中,大家都对那些经典的名言警句很是熟悉吧,在议论文中,...
历史的名言 关于历史的名言大全  1、历史本身是自然史的一个现实的部分,是自然生成为人这一过程的一个现实的部分。...
交通安全名言警句大全   车在轨上行是幸福路,人在轨上走是危险路。如下是中国人才网给大家整理的交通安全名言警句大全,希望对...
朱熹的名言名句 朱熹的名言名句集锦  1、涵养、致和、力行三者,便是以涵养为首,致和次之,力行又次之。  2、心,生...
教师人生格言 教师人生格言大全  创新是人类进步的不竭动力!  当代能做老师的人必定是不平凡的人;因为教育事业本身...
歌颂母爱的名言摘抄 有关歌颂母爱的名言摘抄  在平平淡淡的日常中,大家总免不了要接触或使用名言吧,下面是小编为大家整理的...
毕达哥拉斯名言   毕达哥拉斯名言  1、友谊是一种和谐的平等。  2、要这样生活;使你的朋友不致成为仇人,使你的仇...
伤感的名言 伤感的名言  1.用一转身离开,用一辈子去忘记。  2.明知道天要下雨就该带把伞,明知道不会有结果就...
犯罪心理第七季的励志名言 犯罪心理第七季的励志名言  1.遗伤难愈——伊莉莎白一世  2.若为奇迹,一切证据皆可为之,若为事实...
我的人生格言 我的人生格言我的人生格言如果你的心灵很敞亮,很仁厚,你有一种坦率和勇敢,那么你有可能收获到许多意想不...
蒙田名言   蒙田名言  1、生命的价值不在于时间的长短,而在于你如何利用它。  2、作为一个父亲,最大的乐趣...
中国古代爱情的名言名句 中国古代关于爱情的名言名句(精选115句)  无论是身处学校还是步入社会,许多人都接触或是使用过一些...
人生励志名言 100句人生励志名言精选  1、没有行动的承诺,不过是一席空话。  2、坚持最初的梦想,年轻没有失败...
李嘉诚名言 李嘉诚名言(通用40句)  扩张中不忘谨慎,谨慎中不忘扩张……我讲求的是在稳健与扩张中取得平衡。船要...
目标与理想的名言警句 目标与理想的名言警句  平凡朴实的梦想,我们用那唯一的坚持信念去支撑那梦想,目标与理想的名言警句。以...
张爱玲名人名言 张爱玲名人名言汇总80句精选  人生最可爱就在那一撒手。下面这篇文章是小编收集整理的张爱玲名人名言,...
读书名言 关于读书名言(精选100句)  书是填补精神空虚的方块。以下这篇文章是小编收集整理的读书名言,希望能...
人生经典格言 人生经典格言大全  快乐是一种香水,无法倒在别人身上,而自己却不沾上一些,人生经典格言大全。  牡丹...
企业家的名言 关于企业家的名言  在艰难时期,企业要想获得生存下去的机会,唯一的办法就是保持一种始终面向外界的姿态...