Lua 是一种轻量级、嵌入式的脚本语言,以其简单高效著称。在学习到redis事务的时候需要使用到 Lua 脚本:
自学lua语言,需要从 变量数据类型、流程控制、循环、函数这四个方面开始。
1. 变量与数据类型
- 全局变量:在 Lua 中,所有未明确声明为局部变量的变量默认都是全局变量。
- 局部变量:使用
local关键字来声明局部变量。 - 基本数据类型:
nil:表示没有值。boolean:布尔类型,有两个值true和false。number:数字类型,Lua 支持整数和浮点数。string:字符串类型。function:函数是一等公民,可以作为参数传递或返回。userdata:用于存储任意 C 数据。thread:协程,代表独立执行的线程。table:复合数据类型,是 Lua 中唯一的集合数据结构。
示例:aa =1;
2. 控制结构、循环、函数
- 条件语句:
if,elseif,else - 循环语句:
for,while,repeat-until - 函数定义:使用
function关键字
if condition then
-- 执行代码块
elseif another_condition then
-- 执行代码块
else
-- 执行代码块
end
-- for i = 1, 10,3 do。其中 3表示步长。1~10,每次增加3
for i=1,10 do
print(i)
end
-- 循环,可以使用 break 跳出
while condition do
-- 执行代码块
end
repeat
-- 执行代码块
until condition
-- 函数,必须先定义函数再调用函数
function myFunction(param1, param2)
-- 函数体
return result
end
3. 表(Tables)
表是 Lua 中唯一的数据结构,它可以用来模拟数组、字典和其他复杂数据结构。表通过键值对的形式存储数据。
-- 创建一个空表
myTable = {}
-- 创建一个包含初始元素的表
myArray = {10, 20, 30}
myDict = {key1 = "value1", key2 = "value2"}
-- 访问表元素
print(myArray[1]) -- 输出 10
print(myDict["key1"]) -- 输出 value1
-- 使用迭代器可以对其进行迭代,这里的key表示 1,2,3,4这种序号,v表示值
for k,v in pairs(myArray) do
print(k,v)
end
4. 元表(Metatables)
元表允许你定义表的行为,比如当访问不存在的键时的行为,或者定义两个表相加时的操作。
mt = {}
setmetatable(t, mt)
-- 定义 __add 方法
mt.__add = function(t1, t2)
-- 实现表相加的逻辑
end
5. 模块化编程
Lua 支持模块化编程,可以通过 require 来加载模块,并且可以使用 module 函数(在 Lua 5.0 和 5.1 中)或直接返回一个表来定义模块。
-- 加载模块
local myModule = require("mymodule")
-- 使用模块中的函数
myModule.myFunction()