1 table
1.1 table簡單理解就是一種特殊索引的特殊陣列。
特殊索引指:不僅使用某種特定索引,可以使用包括:字串、其它任意型別值(包括boolean,number,function,table,除了nil),簡單而言就是常量值,table的索引必須是已知值,所以使用變數作為索引值也能理解為以上所列出的索引值。
t={}
var="index"
t[var]=1000 -- 等同於 t["index"]
特殊陣列:table的值可以為任意型別值,可以將table表示為:普通陣列、符號表、集合、記錄、佇列等資料結構,同時lua中的模組(module)、包(package)和物件(object)也是使用tabable實現的
可以將table理解為一種索引陣列:
t["index"] = "value"
1.2 訪問table的值:使用索引對值進行新增,修改,讀取
為了更方便的訪問table,可以將table作為一條條記錄訪問,索引t["name"]提供了一種更簡便的寫法t.name,這是一種語法糖,此時的理解是,可以將name作為table的乙個字段,是一種固定的預定義的索引key,其實本質只是對字串索引的一種簡寫,注意:使用字段(.)方式訪問只適用於字串索引。
所以a.x和a[x]是完全不等價的,第二個中x必須是乙個已定義變數,否則a[x]就是乙個nil,以下是乙個例子說明字段(.)訪問的本質
a={}
a.x = 10 -- 等價於a["x"]
print(a.x) -- 10
x="y"
a[x] = 20 -- 等價於a["y"]或a.y
print(a[x]) -- 20
print(a["y"]) -- 20
print(a.y) -- 20
其它型別值只能使用特定的索引方式: t["index"] = "value"
1.3 table的構造式
初始化陣列的方式:索引是整數,從1 開始
t={}
t=print(t[1]) -- "1"
print(t[3]) -- "1"
print(t[5]) -- "true"
最基本的索引方式:t = ,索引可以為其它非nil已知的值
t={}
t=print(t[0]) -- "1"
print(t["2"]) -- "2"
print(t["x"]) -- "3"
print(t.x) -- "3"
使用記錄(.)風格的初始化方式
t= -- 等價 t={}; t.x=1; t.y=2,
--其實就是:
t=print(t.x) -- "1"
print(t["x"]) -- "1"
更經常使用的是混合的初始化方法,可以使用(;)分隔不同風格的初始化
,重複索引會被覆蓋,
陣列風格初始化值會從1開始,不會被覆蓋
t=; 1000, [1]=0}
for k,v in pairs(t) do print(k,v) end
--1 1000
--0 0
--x 1
--y 2
lua學習 lua函式理解
詞法定界指 巢狀的函式可以訪問他外部函式中的變數。第一類值指 可以被存放在變數中,也可以存放在表中,可以作為函式的引數,還可以作為函式的返回值。的值function foo x return 2 x end這段 實際上就等效於 foo function x return 2 x end所以實際上lu...
lua簡單入門
一 安裝windows下的lua環境,luaforwindows lua53.exe就是lua語言直譯器 按住shift滑鼠右鍵,此處開啟命令視窗 編寫乙個簡單的hello world程式 如果覺得簡單,可以給乙個for迴圈,列印1 10 正常執行,說明lua環境安裝沒有問題 二.lua語言的基本語...
lua簡單入門
一 安裝windows下的lua環境,luaforwindows lua53.exe就是lua語言直譯器 按住shift滑鼠右鍵,此處開啟命令視窗 編寫乙個簡單的hello world程式 如果覺得簡單,可以給乙個for迴圈,列印1 10 正常執行,說明lua環境安裝沒有問題 二.lua語言的基本語...