table型別實現了關聯陣列(associative array)。關聯陣列是一種具有特殊索引方式的陣列。不僅可以通過整數來索引它,還可以使用字串或其他型別的值(除了nil)來索引它。
此外talbe沒有固定的大小。可以動態地新增任意數量的元素到乙個table中。基於table可以以一種簡單,統一和高效的方式來表示普通陣列、符號表、集合、記錄、佇列和其他資料結構。lua也可以通過table來表示模組、包和物件。
在lua中table既不是值也不是變數而是物件。可以將乙個table想象成一種動態分配的物件,程式僅持有乙個對它們的引用(或指標),lua不會暗中產生table的副本或建立新的table。此外,在lua中也不需要宣告乙個table。table的建立通過構造表示式完成。最簡單的構造表示式是{}。
a={}
a["aa"]="aaa"
print(a["aa"])
--for i=0,100 do
--a[i]=i;
--end
----for o=100,0,-1 do
--print(a[o])
--end
b={}
b["bb"]="bbb"
print(b.bb)
上面的兩種寫法是等價的。
陣列通常以1作為索引的起始值。長度操作符「#」用於返回乙個陣列或線性表的最後乙個索引值(或為其大小)。
for i=1,100 do
a[i]=i;
endfor o=1,#a do
print(a[o])
end
關於長度操作符在lua中的習慣寫法
--列印列表a的最後乙個值
print(a[#a])
--刪除最後乙個值
a[#a]=nil
--將v新增到列表的末尾
a[#a+1]=v
table.maxn()
--也可以返回乙個table的最大索引數
Lua學習筆記之table
零散知識點記錄 table的拷貝是淺拷貝,若要深拷貝a b則需要遍歷b中的元素,並將其一一對應賦值給a。乙個table剛初始化時,是沒有metatable的,必須通過setmetatable給table賦予metatable,table才有metatable。所以若想直接用table 來初始化乙個t...
lua學習筆記之淺淡邏輯操作符
先檢視示例 如下 print 1 and 2 print false and 1 print 1 or 2 print false or 1 print not nil print not 1 輸出為 2 false11 true false 對於 and 來講,第乙個數為真時則返回第二個數值。第乙...
Lua 之table的測試
1.字串作為table索引 法1.mytable 法2.mytable 法3.mytable mytable.x xixi 法4.mytable mytable x xixi 注 當使用數字字串作為索引的時候 如 10 法1 錯誤 mytable 法2 mytable 法3 錯誤 mytable m...