lua是一種動態型別的語言。
在lua中有8種基礎型別:nil(空)、boolean(布林)、number(數字)、string(字串)、userdata(自定義型別)、function(函式)、thread(執行緒)和table(表)。
print(type("hello world") -->stringprint(type(10.2*3)) -->number
print(type(print)) -->function
print(type(type)) -->function
print(type(true)) -->boolean
print(type(nil)) -->nil
print(type(type(x))) -->string,與x無關,因為type函式總是返回乙個字串
print(type(a)) -->nil,因為a尚未初始化
a = print -->這是合法的!a(type(a)) -->function
lua的字串和其他lua物件一樣,都是自動記憶體管理機制所管理的物件。這表示無須擔心字串的分配和釋放。
lua字串中的轉義序列:
\a -->響鈴\b -->退格
\f -->提供**
\n -->換行
\r -->回車
\t -->水平tab
\v -->垂直tab
\\ -->反斜槓
\" -->雙引號
另外,還可以用一對匹配的雙方括號來界定乙個字母字串,以這種形式書寫的字串可以延伸多行,lua不會解釋其中的轉義序列。例如:
page = [[......
]]
lua提供了執行時的數字與字串的自動轉換。在乙個字串上應用算術操作時,lua會嘗試將這個字串轉換成乙個數字:
print("10" + 1) -->11print("hello" + 1) --錯誤,不能轉換"hello"
在lua中," .. "時字串連線操作符,當直接在乙個數字後面輸入它的時候,必須要用乙個空格來分隔它們,不然,lua會將第乙個點理解為乙個小數點,可以利用這個特性將數字轉換成字串(最好不要用):
print(10 ..20) -->1020
line = io.read() -->讀取一行n = tonumber(line) -->嘗試將它轉換為乙個數字
print(tostring(10) == "10") -->將乙個數字轉換成字串
在lua 5.1中,可以在字串前放置操作符」#「來獲得該字串的長度:
a = "hello"print(#a) -->5
print(#"world") -->5
table(表)型別實現了「關聯陣列」,「關聯陣列「是一種具有特殊索引方式的陣列。table沒有固定大小,可以動態地新增任意數量的元素到乙個table中。它可以表示普通陣列、符號表(symbol table)、集合、記錄、佇列和其他資料結構。在lua中,table既不是」值「,也不是」變數「,而是」物件「。
a = {} -->建立乙個table,並將它的引用儲存到ak = "x"
a[k] = 10 -->新條目,key="x",value=10
a[20] = "great" -->新條目,key=20,value="great"
print(a["x"]) -->10
k = 20
print(a[k]) -->"great"
a["x"] = a["x"] + 1 -->遞增條目"x"
print(a["x"]) -->11
a = {}a["x"] = 10
b = a -->b與a引用了同乙個table
print(b["x"]) -->10
b["x"] = 20
print(a["x"]) -->20
a = nil -->現在只有b還在引用table
b = nil -->再也沒有對table的引用了
a.x = 10 -->等同於a["x"] = 10print(a.x) -->等同於print(a["x"])
在lua中,陣列通常以1作為索引的起始值。長度操作符"#"用於返回乙個陣列或線性表的最後乙個索引值(或為其大小),例如:
--列印所有的行for i=1, #a do
print(a[i])
end
在lua中,函式(function)是作為「第一類值」來看待的。這表示函式可以儲存在變數中,可以通過引數傳遞給其他函式,還可以作為其他函式的返回值。
a = "jacedy"print("i'm " ..a)
a = 10
print("a is " ..a)
LUA型別與值
lua是一種動態型別語言,語言中沒有型別定義的語法,每個值都攜帶有自身的型別資訊。lua中有8個基礎型別 nil 空 boolean 布林值 number 數字 string 字串 table 表 function 函式 userdata 自定義型別 和thread 執行緒 用type函式可以返回其...
Lua學習筆記之型別與值
基礎介紹 lua是一種動態型別的語言。在語言中沒有型別定義的語法,每個值都帶有其自身的型別資訊。在lua中有8種基本型別,分別是 nil 空 型別 boolean 布林 型別 number 數字 型別 string 字串 型別 userdata 自定義型別 function 函式 型別 thread...
(二)Lua型別與值
lua有八種基礎型別 nil 空 boolean 布林 number 數字 string 字串 userdata 使用者自定義 function 函式 thread 執行緒 and table 表 nil是一種型別,他只有nil乙個值,相當於無效值。全域性變數在第一次賦值前預設值就是nil,也就是說...