【Redis】Lua快速入门使用
文章目录
- 【Redis】Lua快速入门使用
- 1. 概述
- 2. 数据类型
- 2.1 变量
- 2.2 循环
- 3. 函数
- 4. 条件控制
1. 概述
Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。官网:https://www.lua.org/
在centos系统中默认已经安装了lua,所以我们在系统中新建一个文件:
在其中输入以下内容:
print("Hello World!")
通过 lua hello.lua
命令运行。结果如下:
Hello World!
2. 数据类型
数据类型 | 描述 |
---|---|
nil | 这个最简单,只有值nil属于该类,表示一个无效值(在条件表达式中相当于false)。 |
boolean | 包含两个值:false和true |
number | 表示双精度类型的实浮点数 |
string | 字符串由一对双引号或单引号来表示 |
function | 由 C 或 Lua 编写的函数 |
table | Lua 中的表(table)其实是一个"关联数组"(associative arrays),数组的索引可以是数字、字符串或表类型。在 Lua 里,table 的创建是通过"构造表达式"来完成,最简单构造表达式是{},用来创建一个空表。 |
2.1 变量
lua声明变量的时候并不需要指定类型:
-- 声明字符串
local str = 'hello'
-- 字符串拼接可以使用 ..
local str2 = 'hello' .. 'world'
-- 声明数字
local num = 21
-- 声明布尔类型
local flag = true
-- 声明数组 key为索引的 table
local arr = {'java', 'python', 'lua'}
-- 声明table,类似java的map
local map = {name='Jack', age=21}
访问table:
-- 访问数组,lua数组的角标从1开始
print(arr[1])
-- 访问table
print(map['name'])
print(map.name)
2.2 循环
数组和table都可以利用for循环来遍历
遍历数组:
-- 声明数组 key为索引的 table
local arr = {'java', 'python', 'lua'}
-- 遍历数组
for index,value in ipairs(arr) do
print(index, value)
end
遍历table:
-- 声明map,也就是table
local map = {name='Jack', age=21}
-- 遍历table
for key,value in pairs(map) do
print(key, value)
end
注:遍历数组和遍历table的区别在于一个使用
ipairs
,一个使用pairs
。
3. 函数
定义函数的语法:
function 函数名( argument1, argument2..., argumentn)
-- 函数体
return 返回值
end
示例:
定义一个函数,用来打印数组:
function printArr(arr)
for index,value in ipairs(arr) do
print(value)
end
end
4. 条件控制
类似于java的if else :
if(布尔表达式)
then
--[ 布尔表达式为 true 时执行该语句块 --]
else
--[ 布尔表达式为 false 时执行该语句块 --]
end
与java不同的是,布尔表达式中的逻辑运算是基于英文单词:
操作符 | 描述 | 实例 |
---|---|---|
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。 |
**需求:**自定义一个函数,可以打印table,当参数为nil时,打印错误信息
local arr={'11','22','33'}
function printArr(arr)
-- 数组非空
if(not arr)
then
print('数组为空');
else
for index,value in ipairs(arr) do
print(value);
end
end
end
printArr(arr)
printArr(nil)
结果如下所示: