【Lua学习笔记10】Lua中的常用标准库介绍

1,434 阅读3分钟

常用标准库介绍

这篇文章主要来介绍lua中的一些常用的标准库,有下面几个:

  • lua中的内置的一些基本函数
  • 字符串处理的库
  • 操作系统库

lua中的内置基本函数

print

第一个肯定是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/…