lua table對象

lua

lua對於大型程序塊和大型字符串的處理不會有任何問題. 幾兆字節的程序塊,大到容納一本書的字符串均可以正確處理.java

默認的函數遞歸層次在16000層左右,僅僅只是簡單的函數調用,沒有任何的處理邏輯或者局部變量聲明. 可是嵌套層次也已經足夠多了,只要不是太胡來,基本不用擔憂.c++

啞變量_,自己也是變量,是要佔用內存的,能夠輸出啞變量的值,像這樣print(_). 功能基本相似於匿名變量,好處在於不須要爲不須要的變量起一個有意義的名字. 接收函數多重返回值的時候,很是有用.數組

加載其餘lua文件,可使用dofile或者loadfile,參數是lua文件的path字符串.函數

dofile加載即執行,loadfile須要顯示調用纔會執行.ui

require加載lua模塊.lua

全部傳給lua腳本的參數,都會被保存到名爲arg的table中,下標爲0的索引的值是lua腳本文件名.對象

lua中的類型遞歸

lua是動態類型的語言,變量自己沒有類型,每一個值都攜帶了自身的類型信息.索引

type能夠返回當前值的類型的字符串表示.ip

lua沒有整型值,由於雙精度浮點型足以精確表示整型數值,不會出現"四捨五入"的錯誤.

tonumber和tostring,兩個很是實用的函數.字符串轉換成數值可能會引起異常(若是是非數值型字符串)

lua中#放在數組的前面,能夠返回數組的長度,實際上是最後一個元素的索引.

沒有空隙的數組能夠用#操做符獲取當前數組的長度.

若是是有空隙的數組,能夠調用table.maxn來返回當前線性表的最大正向索引數.

for,break,return

數值型的for循環,三個表達式的值,是循環開始前一次性求值的,表達式中的函數調用只會執行一次. 這一點和java,c++等其餘語言的for循環不一樣. 全部的循環變量,都是在for循環內部局部可見.

泛型for,ipairs用於遍歷數組,pairs用於遍歷table,io.lines用於遍歷文件中的每一行. string.gmatch用於遍歷字符串中的單詞.

break和return只能是一個塊的最後一條語句,不過能夠在任意位置用do end把return包起來, 就能夠避免lua解釋器的檢查.

lua中的函數

lua中的函數,本質就是一個普通的變量,能夠像普通變量同樣賦值或者改變函數的行爲.

若是table對象做爲參數,lua會引用外部的table對象進行函數內部的處理.

lua中的對象還有userdata,function類型的實體等.

普通變量,仍然是賦值拷貝.

可變參數,在函數內部能夠用ipairs遍歷全部的參數.

select('#',...)返回可變參數的個數,參數中可能有nil值,不用用泛型for來遍歷, 能夠用select獲取可變參數的個數,而後是數值for循環來遍歷.

參數過多的時候,能夠把相關的參數收集到一個table裏面,控制參數的個數.

相關文章
相關標籤/搜索