lua學習筆記之淺淡table

2021-07-02 03:45:08 字數 1036 閱讀 9165

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...