對於腳本語言lua,它採用的是自動內存管理機制,所以使用時無需考慮內存的釋放和分配,直接用即可
他的變量類型爲以下8種:
nil nil是一種特殊的類型,它只有一個值nil , 主要功能就是爲了區別lua中其他的值,Lua中的對於他的定義是一種“無效值”,類似於C++中的NULL
boolean 其實就是傳統的布爾類型,其類型包含的值有2個 ,顯而易見的: false 和true ,不過值得注意的是,在lua中的條件值 “真”和“假” 卻不僅僅限於 false 和 true , 在lua中除了 false 和 nil ,其他所有的值都將被認作真 , 而 false 和 nil 都將會被認作是假
number 實數類型,其實說白了就是C++ 中的double類型,一個雙精度浮點數。
string 字符串類型,lua中的字符統一採用8位字符編碼,其實類似於C++中的string 類型,特點是這個字符串非常高效,在lua中處理100K或1M的字符串很正常
字面字符串需要一對 “” 或 ‘’ 來界定 :例如 a = "string"
順便說一句,lua中支持轉義字符序列,說白了就是‘\n’等於 回車 這種,具體的定義如下表:
\a |
響鈴 |
\b |
退格 |
\f |
提供表格 |
\n |
換行 |
\r |
回車 |
\t |
水平tab |
\v |
垂直tab |
\\ |
反斜槓 |
\" |
雙引號 |
\' |
單引號 |
還有lua中的字符串連接可以通過 .. 來實現 ,樣例: str = "aaaa".."bbb"
table 表類型,類似於C++中的字典,允許以類似於鍵值對的方式來索引值
table的聲明總是通過構造式{} 來實現 , 樣例: b = {}
然後用法嘛!,就放蕩多了,分別爲
a[x] = 10
a.x = 10
a["x"]= 10
附註:上面2式是等價的,或者說 a.x = a["x"]
鍵的類型可以是 數值或者是字符串
順便說一句 table的數值索引默認爲 1
function 函數類型
在lua中函數是“第一類值”,也就是基礎類型,這些函數可以儲存在變量中,並可以被隨意賦值給其他變量,感覺有點像函數指針,說白了,我們定義的函數變量其實都是一個函數指針,其值默認爲我們聲明的函數,我們通過常規的賦值來講這些函數賦給其他的變量,對於lua中函數的調用方法與C++中一致,直接用就對了~~
順便說一句,由於lua是弱類型,所以無法顯式地聲明返回值類型,任何函數都可以選擇接收返回值,如果該函數本身不返回值的話,則默認返回的是nil
編寫樣例如下:
function Main()
end
Main = function()
end
上面2種寫法等價
a = Main()
userdata 該類型可以將任意的c語言數據存儲到lua變量中,但是隻能進行賦值和相等性測試
thread lua中的線程變量類型