標籤:
在大多數Lua文法分析中可以獲得這些標準Lua函數. 無可爭辯, 我們可以查閱Lua網站, 但是一些少了的函數被Blizzard進行了調整. 下面列出了所有Lua函數. WoW API中的Lua注意在WoWAPI沒有提供所有標準的Lua函數, 很顯然, 作業系統以及檔案I/O庫是不支援的 Lua函數這些函數都是Lua程式設計語言的一部分, 點擊這裡瞭解更多. ?assert(value) - 檢查一個值是否為非nil, 若不是則(如果在wow.exe開啟調試命令)顯示對話方塊以及輸出錯誤調試資訊 ?collectgarbage() - 垃圾收集器. (新增於1.10.1) ?date(format, time) - 返回目前使用者機器上的時間. ?error("error message",level) - 發生錯誤時,輸出一條定義的錯誤資訊.使用pcall() (見下面)捕捉錯誤. ?gcinfo() - 返回使用中外掛程式記憶體的佔用量(kb)以及當前垃圾收集器的使用量(kB). ?getfenv(function or integer) - 返回此表已擷取函數的堆棧結構或者堆棧等級 ?getmetatable(obj, mtable) - 擷取當前的元表或者使用者資料對象. ?loadstring("Lua code") - 分析字串中的lua代碼塊並且將結果作為一個函數返回 ?next(table, index) - 返回下一個key,一對錶值.允許遍曆整個表 ?pcall(func, arg1, arg2, ...) - 受保護調用. 執行函數內容,同時捕獲所有的異常和錯誤. ?select(index, list) - 返回選擇此列表中的商品數值.或者是此件物品在列表中的索引值 ?setfenv(function or integer, table) - 設定此表已擷取函數的堆棧結構或者堆棧等級 ?setmetatable(obj, mtable) - 設定當前表的元表或者使用者資料對象 ?time(table) - 返回從一個unix時間值 ?type(var) - 判斷當前變數的類型, "number", "string", "table", "function" 或者 "userdata". ?unpack(table) - 解壓一個表.返回當前表中的所有值. ?xpcall(func, err) - 返回一個布爾值指示成功執行的函數以及調用失敗的錯誤資訊.另外運行函數或者錯誤的傳回值 數學函數這些表函數同樣可以參考Lua函數庫(他們都是以math.開頭, 詳情參閱數學庫瞭解更多資訊). 三角函數是沒有參考的, 包括角度->弧度的轉換.暴雪的版本使用角度.而Lua的標準數學庫則使用的弧度. ?abs(value) - 返回當前數值的絕對值 ?acos(value) - 返回此角度值的弧餘弦值. ?asin(value) - 返回此角度值的弧正弦值 ?atan(value) - 返回此角度值的弧正切值 ?atan2(y, x) - 在角度中, 返回Y/X的弧正切值. ?ceil(value) - 返回一個整數, 不管小數點後面是多少, 整數部分都進1 ?cos(degrees) - 返回角度的餘弦值 ?deg(radians) - 弧度轉換角度 ?exp(value) - 返回此值的指數值 ?floor(value) - 返回此值的整數值 ?frexp(num) - 返回當前數字小數點後的數值以及小數點後的位元 ?ldexp(value, 倍數) - 輸出此數值的倍數 ?log(value) - 返回此值的自然對數 (以e為底數) ?log10(value) - 返回以10為底數的值 ?max(value[, values...]) - 在一堆值中尋找最大值 ?min(value[,values...]) - 在一堆值中尋找最小值 ?mod(value,modulus) - 返回此值的餘數 ?rad(degrees) - 角度轉換弧度 ?random([ [lower,] upper]) - 返回一個隨機數字 (可選界限為整數值) ?randomseed(seed) - 為偽隨機數字產生器設定種子 ?sin(degrees) - 返回當前角度的正弦值 ?sqrt(value) - 返回數值的平方根值(比如100的平方根為10) ?tan(degrees) - 返回當前角度的正切值 字串庫這些表函數同樣可以參考Lua字串庫(他們都是以string.開頭, 參考字串庫瞭解更多資訊) ?format(formatstring[, value[, ...]]) - 格式化字串 ?gsub(string,pattern,replacement[, limitCount]) - 全域替換 ?strbyte(string[, index]) - 轉換字串為整數值(可以指定某個字元). ?strchar(asciiCode[, ...]) - 轉換整數為相對應的字元 ?strfind(string, pattern[, initpos[, plain]]) - 在一個指定的目標字串中搜尋指定的內容(第三個參數為索引),返回其具體位置. ?strlen(string) - 返回當前字串的字元數 ?strlower(string) - 將字串的字母轉換為小寫格式 ?strmatch(string, pattern[, initpos]) - 與strfind不同的是,macth返回的是具體值,而find返回的是此值的位置 ?strrep(seed,count) - 返回一個字串種子副本的個數 ?strsub(string, index[, endIndex]) - 返回字串指定位置的值. ?strupper(string) - 將字串的字母轉為大寫格式 ?tonumber(arg[, base]) - 若參數能轉為數字則返回一個數值.可以指定轉換的類型.預設為十進位整數 ?tostring(arg) - 轉換參數為字串 下面的字串函數是wow專屬的 ?strtrim(string) - 去除字串前後空格 ?strsplit(delimiter, string) - 分割字串 ?strjoin(delimiter, string, string[, ...]) - 根據定界符將字串串連起來 表函數這些表函數同樣可以參考Lua表庫 (他們都是以"table.開頭", 查閱Table庫 f瞭解更多資訊). 也知道, 很多表都被設計為只有數字索引, 開始於1並且沒有結尾(如like {[1] = "foo", [3] = "bar"} --- [2]是不存在的所以為nil值).工作時,與任何其他表並沒有差別,但很可能會產生意想不到的結果. 在編寫lua中, 這個也就是通常所說的bug ?foreach(table,function) - 為表中的每個元素執行函數 ?foreachi(table,function) - 為表中的每個元素執行函數, 按順序訪問(不推薦, 可以使用ipairs代替) ?getn(table) - 當作為一個聊表時, 返回當前表的大小. 現在已經廢棄了, 你可以直接使用#符號.使用#(table)代替table.getn(table) ?ipairs(table) - 返回一個迭代型整數遍曆表。 ?pairs(table) - 返回一個迭代遍曆表 ?sort(table[, comp]) - 對一個數組進行排序, 還可以指定一個可選的次序函數 ?tinsert(table[, pos], value) - 將一個元素插入指定的位置(預設在表的最後) ?tremove(table[, pos]) - 刪除指定位置的元素(預設表最後一個) Bit Functions魔獸世界包含了Lua BitLib庫(他們都是以 "bit."開頭). 與C的位元運算相同.位元運算庫並非Lua標準函數庫的一部分, 但是在WoW 1.9中得到了應用 ?bit.bnot(a) - 返回一個a的補充 ?bit.band(w1,...) - 返回w的位與 ?bit.bor(w1,...) - 返回w的位或 ?bit.bxor(w1,...) - 返回w的位異或 ?bit.lshift(a,b) - 返回a向左位移到b位 ?bit.rshift(a,b) - 返回a邏輯右位移到b位 ?bit.arshift(a,b) - 返回a算術位移到b位 ?bit.mod(a,b) - 返回a除以b的整數餘數 Lua是一個指令碼語言, 使用這些函數來對你的資料結構進行比對是十分慢的. 除非你有一個大型資料庫以及需要保護的RAM使用, 儲存你的資訊到幾個或個別的變數中. 筆記?所有的字元都有他們的元表設定到全域字串表, 因此一些字串函數可以直接寫在冒號前面進行調用: 切換行號顯示 1 local s = string.format(input, arg1, arg2, ...) 2 3 -- 可以寫成這樣 4 local s = input:format(arg1, arg2, ...) -- input將作為第一個參數, 複製到代碼上, 這就是冒號文法?這同樣可以使用在字串上, "%d":format(arg1)不是有效lua代碼,你可以寫成 切換行號顯示 1 ("%d"):format(arg1)?自從使用字串表, 一些函數放在字串表裡也是同樣可以工作的, 下面的例子是有效: 切換行號顯示 1 function string.print(a) 2 return print(a) 3 end 4 ("test"):print()雖然你應盡量避免填充字串表與你的函數。 相關資源你還可以參閱Lua瞭解更多Lua開發資料.
lua函數隨記