lua学习三

一,表类型

可以当作数组或者Map来理解,比如:

1:a = {},报一个空表赋值给a

2:a[key]=value,把value赋值给表a中的字段key

3:a={ key1=‘value1’, key2=‘value2’ }

4:引用的时候,可以使用. 操作符,如: a.key1

5:如果用索引来引用,跟数组是一样的,如:a[1],注意Lua的索引是从1开始

6:可以使用增强for循环来遍历数组,如:

for k,v in ipairs(a) do

print(k)

print(v)

end

其中的ipairs是Lua的内置函数,实现类似迭带器的功能,从索引1开始递增遍历到最后一个不为nil的

整数索引。类似的还有一个pairs,用来便利非数组的表值,它会遍历所有值不为nil的索引。

7:也可以使用for循环来按照索引遍历数组,如:

for i=1,#a do

end

二,函数

1:定义格式为:

function(参数列表)

end

2:注意:就算没有参数,括号也不能省略

3:形参实参个数不用完全对应,如果想要得到所有的实参,可以把最后一个形参设置成…

4:函数内返回使用return

三, Lua的标准库

Lua的标准库提供了很多使用的功能,Redis支持其中大部分,主要有:

1:Base:提供一些基础函数

2:String:提供用于操作字符串的函数

3:Table:提供用于表操作的函数

4:Math:提供数据计算的函数

5:Debug:提供用于调试的函数

四,在Redis中常用的标准库函数

1:string.len(string)

2:string.lower(string)

3:string.upper(string)

4:string.rep(s, n):返回重复s字符串n次的字符串

5:string.sub(string,start[,end]),索引从1开始,-1表示最后一个

6:string.char(n…):把数字转换成字符

7:string.byte (s [, i [, j]]):用于把字符串转换成数字

8:string.find (s, pattern [, init [, plain]]):查找目标模板在给定字符串中出现的位

置,找到返回起始和结束位置,没找到返回nil

9:string.gsub (s, pattern, repl [, n]):将所有符合匹配模式的地方都替换成替代字符

串。并返回替换后的字符串,以及替换次数。四个参数,给定字符串,匹配模式、替代字

符串和要替换的次数

10:string.match (s, pattern [, init]):将返回第一个出现在给定字符串中的匹配字符

串,基本的模式有:. 所有字符,%a字母,%c控制字符,%d数字,%l小写字母,%p 标点符

号字符,%s 空格,%u 大写字母,%w 文字数字字符,%x 16进制数字等

11:string.reverse (s):逆序输出字符串

12:string.gmatch (s, pattern):返回一个迭代器,用于迭代所有出现在给定字符串中的匹

配字符串

13:table.concat(table[,sep[,i[,j]]]):将数组转换成字符串,以sep指定的字符串分割,

默认是空,i和j用来限制要转换的表索引的范围,默认是1和表的长度,不支持负索引

14:table.insert(table,[pos,]value):向数组中插入元素,pos为指定插入的索引,默认是

数组长度加1,会将索引后面的元素顺序后移

15:table.remove(table[,pos]):从数组中弹出一个元素,也就是删除这个元素,将后面的

元素前移,返回删除的元素值,默认pos是数组的长度

table.sort(table[,sortFunction]):对数组进行排序,可以自定义排序函数

16:Math库里面常见的:abs、ceil、floor、max、min、pow、sqrt、sin、cos、tan等

17:math.random([m[,n]]):获取随机数,如果是同一个种子的话,每次获得的随机数是一样

的,没有参数,返回0-1的小数;只有m,返回1-m的整数;设置了m和n,返回m-n的整数

18:math.randomseed(x):设置生成随机数的种子

五,其它库

除了标准库外,Redis还会自动加载cjson和cmsgpack库,以提供对Json和MessagePack的支

持,在脚本中分别通过cjson和cmsgpack两个全局变量来访问相应功能

1:cjson.encode(表):把表序列化成字符串

2:cjson.decode(string):把字符串还原成为表

3:cmsgpack.pack(表):把表序列化成字符串

4:cmsgpack.unpack(字符串):把字符串还原成为表


你可能感兴趣的:(lua学习三)