> 文章列表 > 【Redis】Lua快速入门使用

【Redis】Lua快速入门使用

【Redis】Lua快速入门使用

【Redis】Lua快速入门使用

文章目录

  • 【Redis】Lua快速入门使用
    • 1. 概述
    • 2. 数据类型
      • 2.1 变量
      • 2.2 循环
    • 3. 函数
    • 4. 条件控制

1. 概述

Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。官网:https://www.lua.org/

【Redis】Lua快速入门使用

在centos系统中默认已经安装了lua,所以我们在系统中新建一个文件:

【Redis】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) doprint(index, value) 
end

遍历table

-- 声明map,也就是table
local map = {name='Jack', age=21}
-- 遍历table
for key,value in pairs(map) doprint(key, value) 
end

注:遍历数组和遍历table的区别在于一个使用 ipairs ,一个使用 pairs


3. 函数

定义函数的语法:

function 函数名( argument1, argument2..., argumentn)-- 函数体return 返回值
end

示例:

定义一个函数,用来打印数组:

function printArr(arr)for index,value in ipairs(arr) doprint(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)thenprint('数组为空');elsefor index,value in ipairs(arr) doprint(value);endend
endprintArr(arr)
printArr(nil)

结果如下所示:

【Redis】Lua快速入门使用