当前位置:文档之家› LUA各种库

LUA各种库

1.math库函数名描述示例结果pi圆周率math.pi 3.1415926535898abs取绝对值math.abs(-2012)2012ceil向上取整math.ceil(9.1)10floor向下取整math.floor(9.9)9max取参数最大值math.max(2,4,6,8)8min取参数最小值math.min(2,4,6,8)2pow计算x的y次幂math.pow(2,16)65536sqrt开平方math.sqrt(65536)256mod取模math.mod(65535,2)1modf取整数和小数部分math.modf(20.12)200.12randomseed设随机数种子math.randomseed(os.time())random取随机数math.random(5,90)5~90rad角度转弧度math.rad(180) 3.1415926535898deg弧度转角度math.deg(math.pi)180exp e的x次方math.exp(4)54.598150033144log计算x的自然对数math.log(54.598150033144)4log10计算10为底,x的对数math.log10(1000)3frexp将参数拆成x*(2^y)的形式math.frexp(160)0.6258ldexp计算x*(2^y)math.ldexp(0.625,8)160sin正弦math.sin(math.rad(30))0.5cos余弦math.cos(math.rad(60))0.5tan正切math.tan(math.rad(45))1asin反正弦math.deg(math.asin(0.5))30acos反余弦math.deg(math.acos(0.5))60atan正切math.deg(math.atan(1))452、lua table库table.concat(table,sep,start,end)concat是concatenate(连锁,连接)的缩写.table.concat()函数列出参数中指定table的数组部分从start位置到end位置的所有元素,元素间以指定的分隔符(sep)隔开。

除了table外,其他的参数都不是必须的,分隔符的默认值是空字符,start的默认值是1,end的默认值是数组部分的总长.sep,start,end这三个参数是顺序读入的,所以虽然它们都不是必须参数,但如果要指定靠后的参数,必须同时指定前面的参数.>tbl={"alpha","beta","gamma"}>print(table.concat(tbl,":"))alpha:beta:gamma>print(table.concat(tbl,nil,1,2))alphabeta>print(table.concat(tbl,"\n",2,3))betagammatable.insert(table,pos,value)table.insert()函数在table的数组部分指定位置(pos)插入值为value的一个元素.pos参数可选,默认为数组部分末尾.>tbl={"alpha","beta","gamma"}>table.insert(tbl,"delta")>table.insert(tbl,"epsilon")>print(table.concat(tbl,",")alpha,beta,gamma,delta,epsilon>table.insert(tbl,3,"zeta")>print(table.concat(tbl,",")alpha,beta,zeta,gamma,delta,epsilontable.maxn(table)table.maxn()函数返回指定table中所有正数key值中最大的key值.如果不存在key值为正数的元素,则返回0.此函数不限于table的数组部分.>tbl={[1]="a",[2]="b",[3]="c",[26]="z"}>print(#tbl)3--因为26和之前的数字不连续,所以不算在数组部分内>print(table.maxn(tbl))26>tbl[91.32]=true>print(table.maxn(tbl))91.32table.remove(table,pos)table.remove()函数删除并返回table数组部分位于pos位置的元素.其后的元素会被前移.pos参数可选,默认为table长度,即从最后一个元素删起. table.sort(table,comp)table.sort()函数对给定的table进行升序排序.>tbl={"alpha","beta","gamma","delta"}>table.sort(tbl)>print(table.concat(tbl,","))alpha,beta,delta,gammacomp是一个可选的参数,此参数是一个外部函数,可以用来自定义sort函数的排序标准.此函数应满足以下条件:接受两个参数(依次为a,b),并返回一个布尔型的值,当a应该排在b前面时,返回true,反之返回false.例如,当我们需要降序排序时,可以这样写:>sortFunc=function(a,b)return b<a end>table.sort(tbl,sortFunc)>print(table.concat(tbl,","))gamma,delta,beta,alpha用类似的原理还可以写出更加复杂的排序函数.例如,有一个table存有工会三名成员的姓名及等级信息:guild={}table.insert(guild,{name="Cladhaire",class="Rogue",level=70,})table.insert(guild,{name="Sagart",class="Priest",level=70,})table.insert(guild,{name="Mallaithe",class="Warlock",level=40,})对这个table进行排序时,应用以下的规则:按等级升序排序,在等级相同时,按姓名升序排序.可以写出这样的排序函数:function sortLevelNameAsc(a,b)if a.level==b.level thenreturn <elsereturn a.level<b.levelendend测试功能如下:>table.sort(guild,sortLevelNameAsc)>for idx,value in ipairs(guild)do print(idx,)end1,Mallaithe2,Cladhaire3,Sagarttable.foreachi(table,function(i,v))会期望一个从1(数字1)开始的连续整数范围,遍历table中的key和value逐对进行function(i,v)操作t1={2,4,6,language="Lua",version="5",8,10,12,web="hello lua"};table.foreachi(t1,function(i,v)print(i,v)end);--等价于foreachi(t1,print)输出结果:12243648510612table.foreach(table,function(i,v))与foreachi不同的是,foreach会对整个表进行迭代t1={2,4,6,language="Lua",version="5",8,10,12,web="hello lua"};table.foreach(t1,function(i,v)print(i,v)end);输出结果:12243648510612web hello lualanguage Luaversion5table.getn(table)返回table中元素的个数t1={1,2,3,5};print(getn(t1))->4table.setn(table,nSize)设置table中的元素个数table.nums(table)table中键值对的个数3.Lua String库函数描述示例结果len计算字符串长度string.len("abcd")4rep返回字符串s的n个拷贝string.rep("abcd",2)abcdabcd lower返回字符串全部字母大写string.lower("AbcD")abcd upper返回字符串全部字母小写string.upper("AbcD")ABCD format返回一个类似printf的格式化字符串string.format("the value is:%d",4)the value is:4 sub returns substring from index i to j of sstring.sub("abcd",2)bcdstring.sub("abcd",-2)cdstring.sub("abcd",2,-2)bcstring.sub("abcd",2,3)bcfind在字符串中查找string.find("cdcdcdcd","ab")nilstring.find("cdcdcdcd","cd")12string.find("cdcdcdcd","cd",7)78gsub在字符串中替换string.gsub("abcdabcd","a","z");zbcdzbcd2string.gsub("aaaa","a","z",3);zzza3byte返回字符的整数形式string.byte("ABCD",4)68char将整型数字转成字符并连接string.char(97,98,99,100)abcd【基本模式串】字符类描述示例结果.任意字符string.find("",".")nil%s空白符string.find("ab cd","%s%s")34%S非空白符string.find("ab cd","%S%S")12%p标点字符string.find("ab,.cd","%p%p")34%P非标点字符string.find("ab,.cd","%P%P")12%c控制字符string.find("abcd\t\n","%c%c")56%C非控制字符string.find("\t\nabcd","%C%C")34%d数字string.find("abcd12","%d%d")56%D非数字string.find("12abcd","%D%D")34%x十六进制数字string.find("efgh","%x%x")12%X非十六进制数字string.find("efgh","%X%X")34%a字母string.find("AB12","%a%a")12%A非字母string.find("AB12","%A%A")34%l小写字母string.find("ABab","%l%l")34%L大写字母string.find("ABab","%L%L")12%u大写字母string.find("ABab","%u%u")12%U非大写字母string.find("ABab","%U%U")34%w字母和数字string.find("a1()","%w%w")12%W非字母非数字string.find("a1()","%W%W")34--------------------------------------------------------------------------------------------------【转义字符%】字符类描述示例结果%转义字符string.find("abc%..","%%")44string.find("abc..d","%.%.")45--------------------------------------------------------------------------------------------------【用[]创建字符集,"-"为连字符,"^"表示字符集的补集】字符类描述示例结果[01]匹配二进制数string.find("32123","[01]")33 [AB][CD]匹配AC、AD、BC、BD string.find("ABCDEF","[AB][CD]")23 [[]]匹配一对方括号[]string.find("ABC[]D","[[]]")45 [1-3]匹配数字1-3string.find("312","[1-3][1-3][1-3]")13 [b-d]匹配字母b-d string.find("dbc","[b-d][b-d][b-d]")13 [^%s]匹配任意非空字符string.find("a","[^%s]")33 [^%d]匹配任意非数字字符string.find("123a","[^%d]")44 [^%a]匹配任意非字母字符string.find("abc1","[^%a]")44--------------------------------------------------------------------------------------------------【用"()"进行捕获】字符类描述示例结果()捕获字符串string.find("12ab","(%a%a)")34abstring.find("ab12","(%d%d)")3412 --------------------------------------------------------------------------------------------------【模式修饰符】修饰符描述示例结果+表示1个或多个,匹配最多个string.find("aaabbb","(a+b)")14aaabstring.find("cccbbb","(a+b)")nil-表示0个或多个,匹配最少个string.find("zzxyyy","(xy-)")33xstring.find("zzzyyy","(x-y)")44y*表示0个或多个,匹配最多个string.find("mmmnnn","(m*n)")14mmmbstring.find("lllnnn","(m*n)")44n 表示0个或1个string.find("aaabbb","(a?b)")34abstring.find("cccbbb","(a?b)")44b。

相关主题