常用标准库介绍
这篇文章主要来介绍lua中的一些常用的标准库,有下面几个:
- lua中的内置的一些基本函数
- 字符串处理的库
- 操作系统库
lua中的内置基本函数
第一个肯定是print啦,因为我们之前的文章中出现最多的估计就是这个函数了,我们看下这个函数的用法。
print(...)
print函数是可以接收任意个数的参数,将所有的参数转化为string输出。
tonumber
将给定的参数转为number类型的方法。
tonumber(num [, base])
这个函数有一个可选的参数,就是数字的基数,比如我们常说的2进制,8进制,10进制等。
先来看几个例子:
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
tostring
将给定的任意类型的参数转化为string。
tostring({a=1}) --> table: 0x7f8e4ae02420
tostring(1) --> 1
不过可以看到这个基本上对于table没有什么作用,因为输出的是table的内存地址,根本看不出里面有什么内容。
那怎么办呢?可以通过前面文章将的metatable来指定table的__tostring方法,当将table转化为string的时候,如果table的metatable中有定义__tostring方法,那就会调用这个方法,然后将这个方法的返回值作为结果输出,我们看个例子:
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(断言)函数我们在错误处理的时候用过。
assert(v [,message])
这个函数当v为假(nil或者false)的时候,返回一个错误,message中的值为错误内容。如果message是没有传入,则默认为“assertion failed!”
type
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函数用于可变参数中,在之前讲函数部分的可变参数的时候用过。
select(index, ...)
如果index为数字,则select返回可变参数的第n个参数的值,如果index是负数,则返回倒数的第index个参数的值,注意,如果index是0或者大于0的数字,就算index超过了传入的参数个数,也不会报错,但是如果是负数,则会报'select' (index out of range)错误。
如果index不是数字,那么只能是字符串“#”,表示获取可变参数的个数。
ipairs
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/…