【Lua學習筆記10】Lua中的經常使用標準庫介紹

經常使用標準庫介紹

這篇文章主要來介紹lua中的一些經常使用的標準庫,有下面幾個:html

  • lua中的內置的一些基本函數
  • 字符串處理的庫
  • 操做系統庫

lua中的內置基本函數

print

第一個確定是print啦,由於咱們以前的文章中出現最多的估計就是這個函數了,咱們看下這個函數的用法。函數

print(...)
複製代碼

print函數是能夠接收任意個數的參數,將全部的參數轉化爲string輸出。ui

tonumber

將給定的參數轉爲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
複製代碼

tostring

將給定的任意類型的參數轉化爲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(斷言)函數咱們在錯誤處理的時候用過。內存

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/…

相關文章
相關標籤/搜索