從C/C++到Lua
因為工作需要,又要去使用Lua了。
以前就只是大概地使用了一下,並沒有多深入。
現在要做的可能是上幾千行的Lua程式碼,所以找了Lua的手冊仔細看看。
做為一個C/C++程式設計師,把自己的學習過程中感覺不一樣的東東寫一下。
本文旨在為C/C++程式設計師提供一個快速瞭解Lua的方法。 如想更深入,還請看手冊。
如有什麼不當的地方,肯請指出,一起學習,謝謝。
1. Lua中沒有指標。
2. Lua中的變數並沒有型別之分,你可以把它當作任何你使用的值型別,包括函式。
3. Lua中的“nil”和C/C++在的NULL差不多,都可以用來表示“空”,但是請注意,只是意義差不多,不是一樣。因為其實NULL在C/C++中定義的是“0”,但是“0”在Lua並不是“空”。
4. 如果想交換a和b的值,可以這麼寫:a, b = b, a; (神奇的Lua)
5. 如果只是區域性變數,請在前面加個“local”,不然就是全域性了。
6. 強大的“..”,連線操作符,可以把任何能轉成字串的所有值連成字串。比如:strMessage = "Name="..strName.."/nAge="..iAge;
7. Lua有自己的垃圾回收系統。
8. 你可以把Lua中的表想像成為C++STL中的map,比如a = { ["DOS"] = 1 },那麼a["DOS"] == 1;
8. 如果想得到一個表中有多少元素,可以用table.getn( ... )。
9. 就算不知道有多少個,你也可以這樣遍歷表中的元素: a = { x = 1, y = 2 }; for key, value in a do print( string.format( "a(%s)=%s/n", key, value ) ); end
10. 函式可以返回多個值: function fun() return 1, 2; end a, b, c = fun(); 這樣之後:a == 1, b == 2, c == nil。這其實和第4項有點類似。