最近在使用Cocos2d-x + Lua來開發游戲。 游戲的主要邏輯將在Lua里寫,之前沒有接觸過Lua,以下是我總結的入門筆記。
運算符
邏輯運算符
與:and
或:or
非:not
邏輯判斷只有在false和nil時為假,其余均為真。 or和and會返回第一個斷路的值。
Lua中沒有C語言的三元符(x ? a : b),但有一個替代方案(x and a) or b。
需要注意的是,以上方案在x為true,a為false,b為true的情況下與三元符的結果是相反的。
關系運算符
不等于:~=
類型和值均相等:==
只有數字和字符串類型在比較時判定的是值,其余數據類型比較的都是引用。
其他運算符
字符串的連接符:..
兩字符串若用+連接時,會被自動轉義成數字類型進行相加,這是由metatable里的add運算決定的。
長度運算符:# 可計算字符串和table的長度。
冒號運算符: :是Lua的一個語法糖,其省去了方法的self參數聲明和方法的顯式調用。 詳見:http://www.lua.org/pil/16.html。
table
table可視為數組,數組下標不同于其他大多數語言,其下標從1開始。
#運算符僅統計所有下標為整數的元素的個數。
與pairs不同的是,ipairs僅遍歷從1開始的連續下標,并且保證輸出順序。
t[2] 和 t["2"]表示不同的記錄
復制代碼 代碼如下:
t={["2"]=2, [2]=2.2,}
table最后可以多留一個分隔符(,或;),參照上一條的t,官方的理由是為了自動生成table的方便(便于自動生成Lua的table配置表)。
復制代碼 代碼如下:
x = 1
t = { x=1.1, [x]=1 }
第一個表示
復制代碼 代碼如下:
t["x"] = 1.1
第二個表示
復制代碼 代碼如下:
t[1] = 1
metatable
metatable的類型是table。 metatable里的key是事件(操作)類型。 metatable里的value是對應的函數(方法),也稱之為metamethod。
控制流
return和break語句只能被寫在語句塊的最后一句,即end前。
for 循環的循環變量是一個內部變量,循環結束之后,就不能再使用它了。
sublime text 2編譯
我平時用Sublime Text 2來編寫Lua腳本,其編譯Lua的設置如下: 生成Lua.sublime-build文件于C:\Users\YOUR_USER_NAME\AppData\Roaming\Sublime Text 2\Packages\Lua目錄下,文件內容為
復制代碼 代碼如下:
{
"cmd": ["lua", "$file"],
"file_regex": "^(?:lua:)?[\t ](...*?):([0-9]*):?([0-9]*)",
"selector": "source.lua"
}
設置好后,用 ctrl + B 即可編譯運行。 以上為pc上的配置。
在mac上需要先編譯安裝Lua
復制代碼 代碼如下:
curl -R -O http://www.lua.org/ftp/lua-5.2.2.tar.gz
tar zxf lua-5.2.2.tar.gz
cd lua-5.2.2
make macosx test
sudo make install
然后在sublime text tools -> build system -> new build system新建一個Lua.sublime-build,內容為
復制代碼 代碼如下:
{
"cmd": ["/usr/local/bin/lua", "$file"],
"file_regex": "^(...*?):([0-9]*):?([0-9]*)",
"selector": "source.lua"
}
即可在mac的sublime text上用 ⌘ + B 編譯Lua。
其他
Lua語句后的分號;可有可無。
變量聲明時盡可能的使用local進行聲明,除非有作為全局變量的必要。
為參數列表,在函數中以arg(類型為table)進行獲取 arg還有一個額外的鍵n,用來表示參數的個數。
您可能感興趣的文章:- Lua腳本語言簡明入門教程
- Lua極簡入門指南(一):基礎知識篇
- Lua極簡入門指南(三): loadfile和錯誤處理
- Lua極簡入門指南(一):函數篇
- Lua極簡入門指南:全局變量
- lua腳本語言快速入門教程
- Lua極簡入門指南(六):模塊
- Lua 極簡入門指南(七):面向對象編程
- Lua腳本語言基本語法快速入門教程
- Lua語言新手簡單入門教程