我是陈皮,一个在互联网 Coding 的 ITer,个人微信公众号「陈皮的JavaLib」关注第一时间阅读最新技术文章。
1 库函数
函数库
,可以理解为存放一系列函数的仓库,函数库中的函数称为库函数
。调用库函数的格式为:
函数库名.库函数名(参数)
1.1 string.sub()
截取字符串,包括开始下标和终止下标的字符。
string.sub(字符串, 开始下标, 终止下标)
string.sub("chenpi", 1, 4) -- chen
string.sub("chenpi", 1, 10) -- chenpi
string.sub("chenpi", 9, 10) -- 输出空字符串,不报错
1.2 tonumber()
将数字字符串按照指定的进制转为10进制的数值类型。
tonumber("12", 16) -- 18,16进制的12转为10进制即为18
tonumber("12", 10) -- 12,10进制的12转为10进制即为12
tonumber("12", 8) -- 10, 8进制的12转为10进制即为10
tonumber("101", 2) -- 5,2进制的101转为10进制即为5
1.3 select()
指定从第几个返回值开始取值,这个函数可以接收任意数目的参数,第一个参数指定函数的行为,第一个参数为 #
则计算后面参数的个数;第一个参数为数字时,代表从剩余的参数的的第几个参数开始返回。
print(select("#", "a", "b", "c", "d")) -- 4
print(select(1, "a", "b", "c", "d")) -- a b c d
print(select(2, "a", "b", "c", "d")) -- b c d
1.4 os.time()
此函数返回当前系统的时间戳(单位为秒)。
print(os.time()) -- 1650294811
1.5 print(...)
打印输出函数,可以接收任意数目的参数。
print("aa", "bb", "cc")
print("oo", true, 123)
print(nil)
print("ok")
-- 输出结果如下
aa bb cc
oo true 123
nil
ok
1.6 tostring(参数)
将参数转换为字符串格式。
print(type(tostring("aa"))) -- string
print(type(tostring(true))) -- string
print(type(tostring(nil))) -- string
print(type(tostring(10))) -- string
print(type(tostring({}))) -- string
1.7 type(参数)
返回参数的类型。
print(type("chenpi")) -- 输出 string
print(type(123)) -- 输出 number
print(type(true)) -- 输出 boolean
print(type(type)) -- 输出 function
print(type({})) -- 输出 table
print(nil) -- 输出 nil
1.8 rawset()
-- 更新表中指定键的值,并返回表的指针
rawset(表, 键, 值)
t = {1, 2, 3, 4}
tt = rawset(t, 3, 0)
for k,v in pairs(t) do
print(k..":"..v)
end
print("---------")
for k,v in pairs(tt) do
print(k..":"..v)
end
-- 输出结果如下
1:1
2:2
3:0
4:4
---------
1:1
2:2
3:0
4:4
1.9 rawget()
-- 获取表中指定键的值,当键不存在时返回nil,并且键只能是数字
rawget(表, 键)
t = {1, 2, 3, 4}
print(rawget(t, 2)) -- 2
1.10 dofile()
-- 打开并执行一个lua脚本文件
dofile(lua脚本文件名)
dofile("ch.lua")
1.11next()
-- 返回下一个键和下一个键对应的值。注意是下一个键,而且只能是数字键
next(表, 键)
t = {1, 2, 3, 4}
print(next(t, 2)) -- 3 3
print(next(t, 4)) -- nil
1.12 pairs(表) 和 ipairs(表)
-- pairs可以遍历集合的元素
t = {1, 2, 3, 4}
for k,v in pairs(t) do
print(k..":"..v)
end
-- 输出结果如下
1:1
2:2
3:3
4:4
t = {1, 2, name=3, age=nil, 4}
for k,v in pairs(t) do
print(k..":"..v)
end
-- 输出结果如下,注意键非数字的输出在键为数字的后面
1:1
2:2
3:4
name:3
-- ipairs也可以遍历集合,但是它不会输出键非数字的
t = {1, 2, name=3, age=nil, 4}
for k,v in ipairs(t) do
print(k..":"..v)
end
-- 输出结果如下,注意键非数字的输出在键为数字的后面
1:1
2:2
3:4
1.13 require(文件名)
搜索目录并加载文件,并判断文件是否已加载,能避免重复加载同一文件。文件名的后缀 .lua
可以省略,并且在使用此函数前会用 package.path(路径)
来指定搜索的目录。
1.14 table.concat()
返回表中从开始下标到终止下标的所有值,并且使用分隔符隔开,后3个参数时可选的。
table.concat(表, 分隔符, 开始下标, 终止下标)
t = {"a", "b", "c", "d", "e"}
print(table.concat(t, "-", 2, 4)) -- b-c-d
print(table.concat(t, "-")) -- a-b-c-d-e
print(table.concat(t)) -- abcde
1.15 table.foreach(表, function(I,v))
遍历整个集合,然后将表中每一个元素的键和值传给函数。
t = {"a", "b", name = "c", "d", age = 18}
table.foreach(t, print)
-- 输出结果如下
1 a
2 b
3 d
name c
age 18
-- foreachi 函数则只会遍历键为数字的元素
table.foreachi(t, print)
-- 输出结果如下
1 a
2 b
3 d
1.16 table.getn(表)
-- 返回表中的元素个数,只计算键为数字的元素
t = {"a", "b", name = "c", "d", age = 18}
print(table.getn(t)) -- 3
print(#t) -- 3
1.17 数学函数库
-- 取绝对值
math.abs(-20) --20
-- 不小于参数的最小整数
math.ceil(5.8) -- 6
-- 不大于参数的最大整数
math.floor(5.8) -- 5
-- 取模
math.fmod(17, 3) -- 2
-- 以10为底的对数
math.log10(1000) -- 3
-- 以自然数为底的对数
math.log(5.43) -- 1.6919391339458
-- 求最大值和最小值
math.max(1, 5, 10, 6) -- 10
math.min(1, 5, 10, 6) -- 1
-- 划分为整数和小数
math.modf(21.15) -- 21 0.15
-- 求次方
math.pow(2, 3) -- 8
-- 获得随机数
math.random(100) -- 一个随机数,执行多次值都是一样的
math.random(1, 100) -- 获取1-100之中的一个随机数,执行多次值都是一样的
-- 设置随机数种子,再使用random函数,randomseed 和 random 一般一起使用
math.randomseed(os.time())
print(math.random(100))
-- 还有其他很多函数,使用时再查文档即可
本次分享到此结束啦~~
如果觉得文章对你有帮助,点赞、收藏、关注、评论,您的支持就是我创作最大的动力!