1. 程式人生 > >從C/C++到Lua

從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項有點類似。