這篇文章主要來介紹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/…