时间:2021-05-22
一、前言
Lua 是一种轻量小巧的脚本语言,用标准 C 语言编写并以源代码形式开放,其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。
Lua 可以应用在游戏开发、独立应用脚本、Web 应用脚本、扩展和数据库插件、安全系统等场景。
笔者学习的目的主要是为了能在 Web 应用(Nginx、Redis)中使用到 Lua 脚本。
特点
特性
二、安装
注意:请确保安装 Lua 之前系统已安装 readline 和 readline-devel。如果没有则键入 yum install -y readline readline-devel 进行安装。
curl -R -O http://www.lua.org/ftp/lua-5.3.4.tar.gztar zxf lua-5.3.4.tar.gzcd lua-5.3.4make linux test测试,命令行中键入 lua -v:
Lua 5.1.4 Copyright (C) 1994-2008 Lua.org, PUC-Rio显示 Lua 版本说明安装正确。
三、运行方式
与其他脚本语言一样,我们需要将 Lua 代码编写在文件中,后缀名为 .lua。
运行该文件的代码时,只需在命令行键入 lua xx.lua 即可。
四、语法
4.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=10str="hello world"不需要声明变量类型,我们可以通过 type() 判断变量类型。
注意:
Lua 变量有三种类型:全局变量、局部变量和表中的域;
默认情况下,不管在哪声明的变量都是全局变量。通过 local 修饰的变量为局部变量;
变量默认值为 nil。
4.2 运算符
1) 赋值运算符
str="hello".."world" -- 通过 .. 连接字符串a,b=10,15 -- a=10,b=15c,d,e=1,2 -- c=1,b=2,e=nil2) 算术运算符
与其他程序设计语言类似。
a,b=10,15c=a+b -- 加号d=a-b -- 减号e=a*b -- 乘号f=a/b -- 除号g=a%b -- 求余h=a^2 -- 求乘方i=-a -- 负号3) 关系运算符
与其他程序设计语言类似。
a,b=10,15print(a>b) -- 大于print(a<b) -- 小于print(a==b) -- 等于print(a~=b) -- 不等于4) 逻辑运算符
print(true and false) -- 与print(true or false) -- 或print(not true) -- 非5) 其他运算符
操作符 说明 .. 连接两个字符串 # 返回字符串或表的长度,如 #“lua”
4.3 流程控制
1) 条件判断,有 3 种写法。
-- if 语句if(true)then print("hello")end-- if .. else 语句a,b=10,15if(a>b)then print(a)else print(b)end-- if 嵌套c=20if(c>10)then if(c<30) then print(c) endend2) 循环,有 4 种写法。
类型 说明 while 循环 在条件为 true 时,让程序重复执行语句。 for 循环 重复执行指定语句,重复次数在 for 中控制。可以遍历数字和泛型。 repeat .. until 重复执行循环,直到指定条件为真为止。 循环嵌套 循环内嵌套多个循环语句。
例如:
-- while 循环a=10while(a>0)do print(a) a=a-1end-- for 循环,遍历数字for a=1,10,1 do print(a)end-- repeat .. until 循环a=10repeat print(a) a=a-1until(a<1)4.4 数组
Lua 数组大小不固定且下标从 1 开始。
arr={"h","e","l","l","o"}-- 此处使用遍历数字方式for index=1,#arr do print(arr[index])end-- 此处使用遍历泛型方式for i,v in ipairs(arr) do print(i,v)end4.5 函数
-- 案例 1function calc(a,b,c) return a+b+cendresult=calc(1,2,3)print(result)-- 案例 2function getCalc(a,b,c) return a,b,cendr1,r2,r3=getCalc(1,2,3)print(r1,r2,r3)Lua 中的函数允许返回多个值。
4.6 table
table 是 Lua 中的一个数据结构,类似于 Java 中的 Map 类型或 Javascript 中的 JSON 对象。
Lua table 使用关联数组,我们可以使用任意类型值作为数组的索引,但不能是 nil。
Lua table 大小不固定。
person={}person.name="jack"person.age=20print(person[1])print(person.name)print(person["age"])4.7 模块和包
模块类似于一个封装库。从 Lua 5.1 开始,Lua 加入标准的模块管理机制,可以将一些公用的代码放在一个文件中,以 API 接口的形式在其他地方调用,有利于代码的重用和降低代码耦合。
Lua 的模块由变量、函数等已知元素组成的 table 。
例如:
创建名为 module.lua 的文件。
module={}module.index=1function module.sum(a,b) return a+bend另一个文件引入:
-- 此处 module 是文件名require "module"-- 此处 module 是引入模块中定义的名称print(module.index)print(module.sum(1,2))总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
相关阅读:AngularJS入门教程之AngularJS表达式AngularJS入门教程之AngularJS指令在前面表达式和指令的教程中了解到,Angular
十天学会做网站教程采用最通俗易懂的语言、从最基本的开始,带领大家开始建站。教程由许耀鹏历时半年时间写成。是非常好的新手建站入门教程。在这里给予推荐。十天学会做网
关于LoadRunner基础入门教程的介绍就到这里了,希望对大家有所帮助!想要详细了解LoadRunner基础入门教程,可以继续关注软件问题的最新动态。注意
假设你希望学习Python这门语言,却苦于找不到一个简短而全面的入门教程。那么本教程将花费十分钟的时间带你走入Python的大门。本文的内容介于教程(Totur
初试牛刀假设你希望学习Python这门语言,却苦于找不到一个简短而全面的入门教程。那么本教程将花费十分钟的时间带你走入Python的大门。本文的内容介于教程(T