Lua學習筆記(基礎篇)

2021-07-09 14:06:38 字數 4541 閱讀 1817

常用運算子

變數命名

變數名和識別符號必須以下劃線或字母開頭。名稱的本身不能包含有除字母、數字或下劃線之外的其它字元。變數名區分大小寫。變數名不得為lua中的關鍵字。

lua中的關鍵字:and、break、do、else、elseif、false、for、function、if、in、local、nil、not、or、repeat、return、then、true、until和while。

資料型別

關鍵字

型別說明

舉例number

數字所有的數字,包括16進製制數和使用科學計數法的數

1e5,0xff1a

string

字串乙個字串行

「hello」

boolean

布林值真(true)和假(false)

true,false

function

函式可以呼叫的語句集合

table

表傳統的雜湊表和陣列的混合型別

thread

執行緒可用於非同步計算的協同程式(有限的輕量執行緒)

userdata

使用者資料

主語言中所定義的傳統的資料結構包裝器

print(type("test string"..4))
執行結果:string

基礎語法

程式猿注意:lua語言中不以分號作為語句結尾。

string.len()中string和len之間的英文句號意味著這個指定的函式是命名空間string中的一部分。

快速賦值

賦值運算子允許乙個變數列出現在左邊,而乙個值的列表出現在右邊。如果運算子左邊的變數個數比右邊的值的個數要多,那麼剩下的變數將會被賦予nil值。

例:

x,y=3,5

print(x)

執行結果:3

print(y)
執行結果:5

nil

是lua中的乙個特殊內容,表示沒有值(空值)。

print(someemptyvariable)
執行結果:nil

print(type(someemptyvariable))
執行結果:nil

因為變數someemptyvariable未繫結任何值,所以它會保持乙個特別的值nil,型別也是nil。可以用此方法測試乙個變數當前是否有值。

print(someemptyvariable == nil)
執行結果:true

print(type(someemptyvariable) == "nil")
執行結果:true

注意區分nil值和字串」nil」,type()函式總是返回乙個字串。

作用域(類似方法體,類等概念)

do

local i = 10

print("inside:"..i)

end

執行結果:inside:10

do關鍵字說明了乙個塊的開始,end關鍵字說明了乙個塊的結束。local關鍵字定義在這個塊中生效的區域性變數。在塊結束後寫以下**:

print(i)
執行結果:nil

在塊外區域性變數i失效。除手動的用do end建立塊,特定的lua結構如for迴圈、while迴圈以及函式的定義都會隱式的新建塊。

建議:在魔獸世界中,外掛程式會和其它可能使用全域性變數的外掛程式產生衝突。盡量使用區域性變數。

在lua中,組塊要麼是正在執行的檔案,要麼是正在執行的字串。變數的作用域被限制在特定的組塊中。這意味著在檔案開頭宣告的區域性變數在其它的檔案中是不可訪問的(它們在不同的組塊中)。

在lua直譯器中,輸入的每一行都是它本身的組塊,除非將其封裝到乙個塊中。

local i = 10

print(i)

執行結果:nil

除非特別指明,幾乎所有的變數都是全域性的。

常用運算子

比較運算子

運算子說明==相等

<小於

>大於

<=小於等於

>=大於等於

~=不等於

注意:等價運算子(」==」和」~=」)可以用來比較任意兩個值,但是其它比較運算子只能用來比較相同型別的值。

字串運算子

運算子說明舉例

..鏈結字串(兩個英文句號)

「x」..」y」

」單引號定義字串

x=』what\』s this』

「」雙引號定義字串

x=」this is a \」「

或[====]

方括號定義字串

x=[[can include a 』 and 「]]或x=[==[can include 『,[[and」]==]

轉義字元

運算子說明備註

\a響鈴字元

魔獸世界不支援

\b退格符

魔獸世界不支援

\f換頁符

魔獸世界不支援

\n換行符

魔獸世界支援

\r回車符

魔獸世界不支援

\t水平製表符

魔獸世界不支援

\v豎直製表符

魔獸世界不支援

\\反斜槓

魔獸世界支援

\"雙引號

魔獸世界支援

\'單引號

魔獸世界支援

\***ascii碼為***的字元

魔獸世界支援

邏輯運算子

當且僅當兩個引數都是true時,返回true;當任意乙個運算元是false或不存在值的時候,返回false。

print(true

andtrue)

執行結果:true

print(false

andtrue)

執行結果:true

特點:lua只對必要的表示式求值(或叫短路求值),如果第乙個引數為true,它只返回第二個引數,因為表示式true and value當且僅當value為ture時才返回true。

print(true

and4)

執行結果:4

print(true

and"hello")

執行結果:hello

只要兩個運算元中有乙個為true,返回true。比and優先順序低,必要時需新增括號。

print(true

ortrue)

執行結果:true

print(false

ortrue)

執行結果:true

print(false

andfalse

ortrue)

執行結果:true

特點:可與and組合使用,形成a?b:c格式的語句。

print(false

and"hello"

or"world")

執行結果:world

將乙個布林值,轉換為另乙個。

print(not

true)

&emspl; 執行結果:false

print(not

false)

執行結果:true

特點:任意不是false和nil的值都會被認為是true。

print(not

4)

執行結果:false

print(not

"hello")

執行結果:false

Lua基礎學習筆記

lua認為false和nil為假,true和非nil為真。要注意的是lua中 0 為 true lua函式多返回值 可變引數ipairs arg 也可以通過 select 來獲取可變引數的數量 連線字串 返回字串長度 陣列下標預設從1開始的。但是是可以指定包括0,或者負數 預設迭代函式 ipairs...

Lua 基礎 學習筆記

標籤 空格分隔 lua local a,b,c 1,2,3 print a,b,c local a,b,c 1,2 print a,b,c local a,b,c 1,2,3,4 print a,b,c 輸出 1 2 3 1 2 nil 1 2 3do end3.1 條件判斷 if then els...

lua學習畢竟1(基礎篇)

一 lua基礎 弱型別 無型別 指令碼.lua文字拓展名檔案 控制台執行指令碼dofile命令 dofile c a.lua 使用 來代替 轉義特殊字元,轉義符號 變數名和函式名,不能使用陣列和下劃線,因為下劃線是它自身要求保留的系統關鍵字 lua關鍵字 and break do else else...