一、Lua 简介
Lua 是轻量、C 语言编写的嵌入式脚本语言,主打嵌入到其他程序,用来扩展功能,Redis 中大量用 Lua 脚本保证命令原子性。
二、基础数据类型
表格
| 类型 | 说明 |
|---|---|
| nil | 空值,相当于 false,未定义变量就是 nil |
| boolean | 布尔:true / false |
| number | 双精度浮点数(整数、小数都存这个类型) |
| string | 字符串,单引号 / 双引号包裹 |
| function | 函数,可以当作变量传递 |
| table | 最重要! 关联数组,既是数组又是 Map;数组下标从 1 开始;用{}创建空表 |
变量:弱类型,不用声明类型,
local代表局部变量(推荐,减少全局污染)
local str = 'hello'
local num = 21
local flag = true
-- 数组table
local arr = {'java','python','lua'}
-- Map结构table
local map = {name='Jack',age=21}
-- 访问
print(arr[1]) -- java
print(map.name) -- Jack
print(map['name']) -- Jack
三、逻辑运算符(和 Java 不一样!用英文单词)
表格
| 运算符 | 规则 |
|---|---|
and | 逻辑与:A 为假返回 A;A 为真返回 B |
or | 逻辑或:A 为真返回 A;A 为假返回 B |
not | 逻辑非,取反 |
小特点:
nil和false视为假;其余所有值(0、空字符串)都是 true
四、条件控制 if
if(布尔表达式) then
-- 条件true执行
else
-- 条件false执行
end
多分支:elseif(连写,没有空格)
local age = 20
if age < 18 then
print("未成年")
elseif age <60 then
print("成年人")
else
print("老人")
end
五、循环 for
ipairs和pairs区别(面试高频)
- ipairs:只遍历连续数字索引,从 1 开始,遇到 nil 就停止,适合数组
local arr = {'java','python','lua'}
for index,value in ipairs(arr) do
print(index,value)
end
- pairs:遍历 table 全部 key,包括字符串 key、不连续数字 key,适合Map 结构 table
local map = {name='Jack',age=21}
for key,value in pairs(map) do
print(key,value)
end
六、函数定义
语法:
function 函数名(参数1,参数2...)
--函数体
return 返回值
end
示例:打印数组
function printArr(arr)
for index, value in ipairs(arr) do
print(value)
end
end
- Lua 支持多返回值
- 函数是一等公民,可以赋值给变量
七、HelloWorld 运行(Linux)
# 创建文件
touch hello.lua
# 文件内写入
print("Hello World!")
# 执行脚本
lua hello.lua
转载自 CSDN-专业IT技术社区
原文链接:https://blog.csdn.net/2503_93626619/article/details/167126089



