0
点赞
收藏
分享

微信扫一扫

redis脚本LUA


1、数据类型
nil : 为空null
string :字符串
number:数字
boolean:布尔
table:数组、字典
function:函数

2、变量
2.1 全局变量 :默认值为nil,无需声明,直接使用
a = 1; //为全局变量赋值
print(b); //nil
a = nul;//删除全局变量,全局变量没有声明为声明之分,只有非nil和nil的区别
2.2 局部变量 :使用local声明
local c; //声明一个局部变量,默认值为nil
local d = 1;//声明局部变量并赋值为1
local e,f;//声明多个变量

【注1】:声明变量名规则与php、python都一样,不能以数字开头,
只能包含数字、字母、下划线,区分大小写,关键字不能用。
【注2】redis脚本中不能使用全局变量,只能使用局部变量以防止脚本直接冲突。

eg:
local x = 10
if true then
local x = x+1
print(x)
do
local x = x + 1
print(x)
end
print(x)
end
print(x)

3、注释
3.1 单行注释:以--开头,到行位结束
3.2 多行注释:以--[[开始 到]]结束

4、lua的数组索引是从1开始,与其他语言不一样

5、操作符:
5.1 计算:+、-、*、/、%、^(幂运算)
5.2 比较:==、~=、>、<、>=、<=
比较不会对左右两边值进行自动转换类型,比如:
1 == '1' //false
1 == 1 //true
如果比较字符串或者数字,要手动转型:
1 == tonumber('1') //tonumber还可以进行进制转换
'1' == tostring(1)
5.3 逻辑:and 、or、not
5.4 连接: “..”,用来连接字符串
print('hello'..'world')//helloworld
print('hello'..11)//连接操作符自动将number转string
5.5 取长度操作符: #
print(#'hello') //5

6、if
if 条件 then
语句块
elseif 条件 then
语句块
else
语句块
end
【注】:redis中除了nil与false,其他都为真,包括0、'0'都为真

7、循环:while、repeat、for
while 表达式 do
语句块
end

repeat
语句块
until 条件表达式

for有两种形式:
1)通用方式迭代
for 变量1,变量2,变量3...变量n in 迭代器 do
语句块
end

2)数字方式循环
local sum = 0
for I=1,100 do
sum = sum + i
end

脚本中经常用到2)

8、表类型:表示lua中唯一的数据结构,可以理解为关联数组,任何类型
的值(除了nil)都可以作为表的索引。
eg:
a = {} //将变量a赋值给一个空表
a['field'] = 'value'//field赋值value
print(a.field)

people = { //也可以这样定义
name:'张三',
age:30
}

a = {} //当索引为整数时候就与传统的数组一样,索引从1开始
a[1] = 'bob'
a[2] = 'jim'

1)通用方式迭代
for index,value in ipairs(a) do
print(index)
print(value)
end
【注】ipairs:lua内置函数,实现迭代器功能

2)数字形式循环
for i=1,#a do
print(i)
print(a[i])
【注】:#a是取a的长度


举报

相关推荐

0 条评论