🍓 简介:java系列技术分享(👉持续更新中…🔥)
🍓 初衷:一起学习、一起进步、坚持不懈
🍓 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正🙏
🍓 希望这篇文章对你有所帮助,欢迎点赞 👍 收藏 ⭐留言 📝
🍓 更多文章请点击
文章目录
- 一、Lua简介
- 二、Lua安装
- 2.1 Hello World 入门
- 三、数据类型
- 四、基本语法
- 4.1 注释
- 4.2 交互式编程
- 4.3 字符串连接
- 4.5 循环
- 4.5.1 while 循环
- 4.5.2 for 循环
- 4.5.3 repeat...until循环
- 4.5.4 循环控制语句
- 4.6 函数
- 4.7 流程控制
- 4.7.1 if 语句
- 4.7.2 if...else 语句
- 4.8 逻辑运算符
一、Lua简介
官网:https://www.lua.org
Lua 教程 | 菜鸟教程:https://www.runoob.com/lua/lua-tutorial.html
LuatOS 文档:https://wiki.luatos.com/
LuatOS 在线模拟 - lua在线测试 :https://wiki.luatos.com/_static/luatos-emulator/lua.html
Lua 是一种轻量小巧的脚本语言,用标准 C 语言编写并以源代码形式开放,其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。Lua作为一种脚本语言(解释型语言),号称性能最高的脚本,被广泛应用在很多需要性能的地方,比如nginx,游戏脚本,OpenResty等等。在我的项目agent中,使用lua脚本实现了任务处理逻辑。任务执行器在接收到任务时选择对应的lua脚本执行任务,与执行器进行解耦,同时支持热更新。
二、Lua安装
Lua的安装非常简单,如果是Linux系统,则将make all test替换掉make linux test
curl -R -O http://www.lua.org/ftp/lua-5.3.5.tar.gz tar zxf lua-5.3.5.tar.gz cd lua-5.3.5 make linux test
2.1 Hello World 入门
-
新建hello.lua文件
-
在其中添加 print(“Hello World”)
-
运行 lua hello.lua
测试成功
三、数据类型
数据类型 描述 说明 nil 这个最简单,只有值nil属于该类,表示一个无效值(在条件表达式中相当于false)。 nil 作比较时应该加上双引号 boolean 包含两个值:false和true。 Lua 把 false 和 nil 看作是"假",其他的都为"真" number 表示双精度类型的实浮点数 string 字符串由一对双引号或单引号来表示 也可以用 2 个方括号 “[[]]” 来表示"一块"字符串。使用 # 来计算字符串的长度 function 由 C 或 Lua 编写的函数 table Lua 中的表(table)其实是一个"关联数组"(associative arrays),数组的索引可以是数字或者是字符串。在 Lua 里,table 的创建是通过"构造表达式"来完成,最简单构造表达式是{},用来创建一个空表。 可以使用type函数测试给定变量或者值的类型。
nil
nil 类型表示空值,给全局变量赋值 nil 等同于把它们删除。
nil 作比较时应该加上引号:
if (type(nil)==nil) then print(true) else print(false) end if (type(nil)=="nil") then print(true) else print(false) end
输出:
false true
四、基本语法
4.1 注释
两个减号是单行注释: --注释
多行注释 --[[ 注释 --]]
4.2 交互式编程
Lua 交互式编程模式可以通过命令 lua -i 或 lua 来启用:
lua -i Lua 5.4.6 Copyright (C) 1994-2023 Lua.org, PUC-Rio
4.3 字符串连接
可以使用操作符…(两个点)
print("hello".."world")
循环变量
-- 字符串 local str = 'Hello' -- 数字 local num = 21 -- 布尔类型 local flag = true -- 数组 local arr = {'java','python','lua'} -- table local map = {name = 'Jack',age = 12}
访问
--访问数组 ,lua数组的角标从1开始 print(arr[1]) -- 访问 table print(map['name']) print(map.name)
4.5 循环
4.5.1 while 循环
local a = 10 while (a < 20) do print("value of a:", a) a = a + 1 end
输出:
value of a: 10 value of a: 11 value of a: 12 value of a: 13 value of a: 14 value of a: 15 value of a: 16 value of a: 17 value of a: 18 value of a: 19
4.5.2 for 循环
数值for循环
for var=exp1,exp2,exp3 do <执行体> end
var 从 exp1 变化到 exp2,每次变化以 exp3 为步长递增,并执行一次 “执行体”。exp3 是可选的,如果不指定,默认为1。
for i = 10, 1, -1 do print(i) end
输出
10 9 8 7 6 5 4 3 2 1
遍历数组
local arr = {'java','python','lua'} --遍历数组 for index,value in ipairs(arr) do print(index,value) end
遍历table
local map = {name = 'Jack',age = 12} --遍历table for key ,value in pairs(map) do print(index,value) end
4.5.3 repeat…until循环
先执行循环体的语句,再进行条件判断,如果条件为 flase 则继续执行循环体,否则跳出循环。
repeat statements until( condition )
local a = 10 repeat print("value of a:", a) a = a + 1 until (a > 15)
输出
value of a: 10 value of a: 11 value of a: 12 value of a: 13 value of a: 14 value of a: 15
4.5.4 循环控制语句
break语句
执行到 break 处会跳出循环。
local a = 10 while(a < 20) do print("value of a:", a) a = a + 1 if(a > 15) then break end end
4.6 函数
local function factorial1(n) if n == 0 then return 1 else return n * factorial1(n - 1) end end print(factorial1(5)) local factorial2 = factorial1 print(factorial2(5))
输出
120 120
可变参数
Lua 函数可以接受可变数目的参数,和 C 语言类似,在函数参数列表中使用三点 … 表示函数有可变的参数。
local function add(...) local s = 0 for i, v in ipairs { ... } do --> {...} 表示一个由所有变长参数构成的数组 s = s + v end return s end print(add(3, 4, 5, 6, 7)) --> 25
内置函数
Lua 也有很多内置函数,我们可以通过官方手册进行查询:https://www.lua.org/manual/5.4/
4.7 流程控制
4.7.1 if 语句
--[ 定义变量 --] local a = 10; --[ 使用 if 语句 --] if (a < 20) then --[ if 条件为 true 时打印以下信息 --] print("a 小于 20"); end print("a 的值为:", a);
输出
a 小于 20 a 的值为: 10
4.7.2 if…else 语句
--[ 定义变量 --] local a = 100; --[ 检查条件 --] if (a < 20) then --[ if 条件为 true 时执行该语句块 --] print("a 小于 20") else --[ if 条件为 false 时执行该语句块 --] print("a 大于 20") end print("a 的值为 :", a)
输出
a 大于 20 a 的值为 : 100
4.8 逻辑运算符
设定 A 的值为 true,B 的值为 false
操作符 描述 实例 and 逻辑与操作符。 若 A 为 false,则返回 A,否则返回 B。 (A and B) 为 false。 or 逻辑或操作符。 若 A 为 true,则返回 A,否则返回 B。 (A or B) 为 true。 not 逻辑非操作符。与逻辑运算结果相反,如果条件为 true,逻辑非为 false。 not(A and B) 为 true。 -
猜你喜欢
- 15天前(三亚海棠湾君悦度假酒店)三亚海棠湾君悦酒店暑期夏令营悦趣海岛游招募中
- 15天前(香港航空三亚航线复航了吗)香港航空三亚航线复航
- 15天前(艾美酒店连锁)艾美酒店全球夏日计划回归,联手Wishbone主厨推出创新冰饮
- 15天前(云南南博会展馆)旅居云南馆亮相第9届南博会
- 15天前(马尔代夫华尔道夫酒店多少钱)Chef Zhao就任马尔代夫伊挞富士岛华尔道夫酒店Li Long中餐厅新主厨
- 15天前(澳涞坞是什么)从本土品牌到全球舞台:澳涞山庄获国际顶级产业资源加持
- 15天前(天津四季酒店开业时间)天津四季酒店邀你开启灿烂暑假
- 15天前(世茂海峡大厦多高)巴西地产高管齐聚厦门世茂海峡大厦 共探超高层建筑锻造经验
- 15天前(芜宣机场国际航班)新华丝路:芜宣机场开通至越南首都河内的国际货运航线
- 15天前(泸沽湖大酒店地址)泸沽湖岚岳酒店盛大开业|以摩梭文化为魂,打造高端度假新地标
网友评论
- 搜索
- 最新文章
- (2020广州车展哈弗)你的猛龙 独一无二 哈弗猛龙广州车展闪耀登场
- (哈弗新能源suv2019款)智能科技颠覆出行体验 哈弗重塑新能源越野SUV价值认知
- (2021款全新哈弗h5自动四驱报价)新哈弗H5再赴保障之旅,无惧冰雪护航哈弗全民电四驱挑战赛
- (海南航空现况怎样)用一场直播找到市场扩张新渠道,海南航空做对了什么?
- (visa jcb 日本)优惠面面俱到 JCB信用卡邀您畅玩日本冰雪季
- (第三届“堡里有年味·回村过大年”民俗花灯会活动)第三届“堡里有年味·回村过大年”民俗花灯会活动
- (展示非遗魅力 长安启源助力铜梁龙舞出征)展示非遗魅力 长安启源助力铜梁龙舞出征
- (阿斯塔纳航空公司)阿斯塔纳航空机队飞机数量增至50架
- (北京香港航班动态查询)香港快运航空北京大兴新航线今日首航
- (我在港航“呵护”飞机 每一次安全着陆就是最好的荣誉)我在港航“呵护”飞机 每一次安全着陆就是最好的荣誉
- 热门文章