lua菜鳥教程 Lua入門學習筆記

2021-10-13 09:04:14 字數 1810 閱讀 1229

最近在使用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引數宣告和方法的顯式呼叫。 詳見:

table

table可視為陣列,陣列下標不同於其他大多數語言,其下標從1開始。

#運算子僅統計所有下標為整數的元素的個數。

與pairs不同的是,ipairs僅遍歷從1開始的連續下標,並且保證輸出順序。

t[2] 和 t["2"]表示不同的記錄

t=table最後可以多留乙個分隔符(,或;),參照上一條的t,官方的理由是為了自動生成table的方便(便於自動生成lua的table配置表)。

x = 1

t =

第乙個表示

t["x"] = 1.1

第二個表示

t[1] = 1

metatable

metatable的型別是table。 metatable裡的key是事件(操作)型別。 metatable裡的value是對應的函式(方法),也稱之為metamethod。

控制流return和break語句只能被寫在語句塊的最後一句,即end前。

for 迴圈的迴圈變數是乙個內部變數,迴圈結束之後,就不能再使用它了。

sublime text 2編譯

"cmd": ["lua", "$file"],

"file_regex": "^(?:lua:)?[\t ](...*?):([0-9]*):?([0-9]*)",

"selector": "source.lua"

設定好後,用 ctrl + b 即可編譯執行。 以上為pc上的配置。

在mac上需要先編譯安裝lua

curl -r -o

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 檔案 I O

lua 檔案 i o lua i o 庫用於讀取和處理檔案。分為簡單模式 和c一樣 完全模式。簡單模式 model 擁有乙個當前輸入檔案和乙個當前輸出檔案,並且提供針對這些檔案相關的操作。完全模式 complete model 使用外部的檔案控制代碼來實現。它以一種面對物件的形式,將所有的檔案操作定...

lua菜鳥教程 LUA學習之一 初次接觸

對於乙個開源工程,開始學習它的第一步自然是編譯工程。使用vc編譯lua,在網上已有許多介紹,但 紙上得來終覺淺 自己走一遍還是有必要的。步驟如下 2.開啟vc建立乙個solution,就叫lua.sln 3.建立乙個名為liblua的project lua庫 新增除lua.c和luac.c以外的所有...

lua菜鳥教程 Lua 模組與包

lua 模組與包 模組類似於乙個封裝庫,從 lua 5.1 開始,lua 加入了標準的模組管理機制,可以把一些公用的 放在乙個檔案裡,以 api 介面的形式在其他地方呼叫,有利於 的重用和降低 耦合度。lua 的模組是由變數 函式等已知元素組成的 table,因此建立乙個模組很簡單,就是建立乙個 t...