構造器是建立和初始化表的表示式。表是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 = nilfor line in
io.lines() do
list =
end
這段**從標準輸入讀進每行,然後反序形成鍊錶。下面的**列印鍊錶的內容:
l =listwhile l do
(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...