这篇文章主要来介绍lua中的一些经常使用的标准库,有下面几个:html
第一个确定是print啦,由于咱们以前的文章中出现最多的估计就是这个函数了,咱们看下这个函数的用法。函数
print(...)
复制代码
print函数是能够接收任意个数的参数,将全部的参数转化为string输出。ui
将给定的参数转为number类型的方法。lua
tonumber(num [, base])
复制代码
这个函数有一个可选的参数,就是数字的基数,好比咱们常说的2进制,8进制,10进制等。spa
先来看几个例子:操作系统
print(tonumber(1)) --> 1
print(tonumber('1')) --> 1
print(tonumber('a')) --> nil
print(tonumber('1', 10)) --> 1
print(tonumber(1, 10)) --> 1
print(tonumber(16, 8)) --> 8进制的16换成10进制的结果就是14
复制代码
将给定的任意类型的参数转化为string。code
tostring({a=1}) --> table: 0x7f8e4ae02420
tostring(1) --> 1
复制代码
不过能够看到这个基本上对于table没有什么做用,由于输出的是table的内存地址,根本看不出里面有什么内容。htm
那怎么办呢?能够经过前面文章将的metatable来指定table的__tostring方法,当将table转化为string的时候,若是table的metatable中有定义__tostring方法,那就会调用这个方法,而后将这个方法的返回值做为结果输出,咱们看个例子:ip
a = {'a', 'b', 'c'}
setmetatable(a, {
__tostring = function(table)
local result = ''
for k,v in ipairs(table) do
result = result .. k .. v .. '\n'
end
return result;
end
})
print(a)
-- 1a
-- 2b
-- 3c
复制代码
assert(断言)函数咱们在错误处理的时候用过。内存
assert(v [,message])
复制代码
这个函数当v为假(nil或者false)的时候,返回一个错误,message中的值为错误内容。若是message是没有传入,则默认为“assertion failed!”
type函数用来返回参数的类型字符串。
print(type(1)) --> number
print(type('1')) --> string
print(type(false)) --> boolean
print(type({a=1})) --> table
print(type(function() return 1 end)) --> function
print(type(nil)) --> nil
复制代码
select函数用于可变参数中,在以前讲函数部分的可变参数的时候用过。
select(index, ...)
复制代码
若是index为数字,则select返回可变参数的第n个参数的值,若是index是负数,则返回倒数的第index个参数的值,注意,若是index是0或者大于0的数字,就算index超过了传入的参数个数,也不会报错,可是若是是负数,则会报'select' (index out of range)错误。
若是index不是数字,那么只能是字符串“#”,表示获取可变参数的个数。
ipairs用来遍历table中的数据。
for k,v in ipairs(t) do body end
复制代码
例子:
function list(table)
for k,v in ipairs(table) do
print(k .. v)
end
end
list({'a', 'b'})
复制代码
这里就介绍这么几个经常使用的内置函数,更多的内置函数参考: www.lua.org/manual/5.3/…