Lua陣列與表

2022-09-07 18:18:17 字數 1498 閱讀 1221

table是 lua中的一種資料結構, 既可以當做陣列(array)使用, 又可以當做字典(類似 j**a中的hashmap)來使用

在 lua的8中資料結構中,

· 可以作為 table鍵的有: number, string, boolean, function, table, thread.

· 不能作為 table鍵的有: nil.

· userdata未知

第一種方式:

-- 使用花括號來建立乙個空表, 然後賦值

mytab = {}

mytab['x'] = 12

mytab[2] = 'hello'

第二種方式:

-- 建立表的時候, 同時初始化表資料

-- 表中儲存鍵值對資料, 格式如: [key] = value, 鍵和值可以是多種型別

mytab =

第三種方式

-- 同第二種方式, 不過非數字型別的鍵可以省略中括號, 數字型別不能省略

mytab =

第四種方式

-- 想使用數字索引作為鍵時, 可以通過僅寫值的方式宣告, 

-- 這樣 lua會按照宣告順序為值建立從1開始的自增的索引

-- 如果表中都是數字索引, 那麼此時的表就是乙個陣列

mytab =

第一種方式

-- 先構造乙個表

mytab =

-- 以下是最常用的兩種遍歷方式

-- 全表遍歷

-- 這種遍歷方式是按照 table中 key的 hash值排列順序來遍歷的,

-- 並非是 table中 key的定義順序, 並且不關心 key是否從1開始和 key是否以1遞增

for k, v in

pairs(tab) do

print(k, v)

end-- [[

output:

1112

12313 c c

b b

a a

]]-- 僅遍歷表中的陣列部分

-- 按照 key的大小順序來遍歷 (注意不是 key定義的順序)

-- 因為表中非數字鍵的鍵值對是使用 hash表儲存的, 這樣的資料是無序的, 所以無法遍歷

for k, v in

ipairs(mytab) do

print(k, v)

end--[[

output:

1 11

2 12

3 13

]]-- 第三種方式

-- #mytab可以獲取到 mytab表中的陣列部分的元素個數

for i = 1, #mytab do

print(mytab[i])

end-- 第四種

--

Lua中Table表與C 陣列區別

table 是 lua 的一種資料結構用來幫助我們建立不同的資料型別,如 陣列 字典等。table表中陣列與c 陣列區別 table表並不完全等同於c 陣列 一 table表中陣列索引值可以為任意型別 可以為負數 但不能為nil型別 c 陣列型別只能為整數型別 二 table表陣列元素可以連線,c ...

Lua學習 表和陣列

在lua中,表 table 是十分重要的一種資料結構,實際上lua對於複雜資料型別也僅提供了表給我們,我們通過表可以實現我們需要的大部分重要的資料結構,比如陣列。table型別實現了關聯陣列,關聯陣列是一種具有特殊索引方式的陣列 不僅可以通過整數來索引它,還可以使用字串或其它型別的值 除了nil 來...

lua元表與元方法

1.首先我們先了解下lua的表 2.元表 是用來定義對table操作的方式表 我們先來看一下問題 t1 t2 我們把這兩張錶拼起來 第一種方法 table.inster t1,t2 1 第二種方法 元表 mt 方法類似於c 的運算子過載可以看出我們過載的是 mt.add function t1,t2...