LUA 表的構造

2022-04-15 10:21:09 字數 1625 閱讀 5189

構造器是建立和初始化表的表示式。表是lua特有的功能強大的東西。最簡單的建構函式是{},用來建立乙個空表。可以直接初始化陣列:

days =

lua將"sunday"初始化days[1](第乙個元素索引為1),用"monday"初始化days[2]...

print(days[4]) --

> wednesday

建構函式可以使用任何表示式初始化:

tab =

如果想初始化乙個表作為record使用可以這樣:

a =  <--

> a = {}; a.x=0; a.y=0

不管用何種方式建立table,我們都可以向表中新增或者刪除任何型別的域,建構函式僅僅影響表的初始化。

w = 

x =

w[1] = "

another field

"x.f =w

print(w["

x"]) --

> 0

print(w[1]) --

> another field

print(x.f[1]) --

> another field

w.x = nil

--remove field "x"

每次呼叫建構函式,lua都會建立乙個新的table,可以使用table構造乙個list:

list = nil

for line in

io.lines() do

list =

end

這段**從標準輸入讀進每行,然後反序形成鍊錶。下面的**列印鍊錶的內容:

l =list

while l do

print

(l.value)

l = l.next

end

在同乙個建構函式中可以混合列表風格和record風格進行初始化,如:

polyline = ,,,}

這個例子也表明我們可以巢狀建構函式來表示複雜的資料結構.

print(polyline[2].x) --

> -10

上面兩種建構函式的初始化方式還有限制,比如你不能使用負索引初始化乙個表中元素,字串索引也不能被恰當的表示。下面介紹一種更一般的初始化方式,我們用[expression]顯示的表示將被初始化的索引:

opnames = 

i = 20; s = "-"

a =

print(opnames[s]) --

> sub

print(a[22]) --

> ---

list風格初始化和record風格初始化是這種一般初始化的特例:

<--

>

<--

>

如果真的想要陣列下標從0開始:

days =

a =

在建構函式中域分隔符逗號(",")可以用分號(";")替代,通常我們使用分號用來分割不同型別的表元素。

Lua表構造器的索引問題

lua的表有多種構造方式,最簡單的就是空構造器。mytable mytable mytable mytable 但是,如果列表式和帶方括號的表示式混用,結果就會和期望的不同了。就像下面這個表構造器的寫法。mytable 這個表的列印結果是 33 index 1 44 index 2根據這個結果,我實...

Lua簡單使用,lua工具類編寫,lua表的使用

專案中的工具類編寫,以utils.lua為例 首先建立乙個表。utils utils or 尋找陣列中某個值的下標 utils utils or 尋找陣列中某個值的下標,僅在table中每個值都不一樣時有效 utils.findidxbyvalue function arr,value local ...

Lua基礎 table的幾種構造方式

之前對於lua的研究都是紙上談兵,沒有真正的專案練手,現在公司的專案基本上都是用lua開發,是時候補充一下我那蹩腳的lua知識了。基礎資料型別 表示式 迴圈結構什麼的我就不說了,這麼簡單的東西說了也要被大家噴。今天我想說說table的幾種構造方式。0.lua除錯工具 luaeditor 1.什麼是t...