詳解Lua中的表的概念及其相關操作方法
表格是唯一的數(shù)據(jù)結構中Lua可以幫助我們創(chuàng)造出不同的類型,如數(shù)組和字典。 Lua使用關聯(lián)數(shù)組和可不僅數(shù)字,但也有不同的零字符串索引。表格都沒有固定的大小,并根據(jù)需要可以增長。
Lua采用的所有陳述,包括包裝的代表性表。當我們訪問一個方法的字符串。格式,這意味著,我們正在訪問的格式化功能的字符串封裝。
表示和用法
表稱為對象和它們既不值,也沒有變。 Lua使用構造函數(shù)表達式{}創(chuàng)建一個空表。它是要知道,有保存表的參考和表本身的變量之間沒有固定的關系。
mytable = {}
--simple table value assignment
mytable[1]= "Lua"
--removing reference
mytable = nil
-- lua garbage collection will take care of releasing memory
當我們有一個表與集合的元素,如果我們將其指定為b,a和b都指向相同的內存。沒有單獨的內存單獨分配對b。當設置為無,表將仍然可以訪問到b。當沒有引用表,然后在Lua垃圾收集需要清理過程,使這些未引用的內存再次被重用。
一個例子如下所示用于說明表的上述特征。
mytable = {}
print("Type of mytable is ",type(mytable))
mytable[1]= "Lua"
mytable["wow"] = "Tutorial"
print("mytable Element at index 1 is ", mytable[1])
print("mytable Element at index wow is ", mytable["wow"])
-- alternatetable and mytable refers to same table
alternatetable = mytable
print("alternatetable Element at index 1 is ", alternatetable[1])
print("mytable Element at index wow is ", alternatetable["wow"])
alternatetable["wow"] = "I changed it"
print("mytable Element at index wow is ", mytable["wow"])
-- only variable released and and not table
alternatetable = nil
print("alternatetable is ", alternatetable)
-- mytable is still accessible
print("mytable Element at index wow is ", mytable["wow"])
mytable = nil
print("mytable is ", mytable)
當我們運行上面的程序,會得到下面的輸出
mytable Element at index 1 is Lua
mytable Element at index wow is Tutorial
alternatetable Element at index 1 is Lua
mytable Element at index wow is Tutorial
mytable Element at index wow is I changed it
alternatetable is nil
mytable Element at index wow is I changed it
mytable is nil
表操作
在對表操作內置函數(shù)和它們被列于下表中。

讓我們看看上面的函數(shù)一些例子。
表串聯(lián)
我們可以使用concat函數(shù)來連接,如下所示的兩個表。
-- returns concatenated string of table
print("Concatenated string ",table.concat(fruits))
--concatenate with a character
print("Concatenated string ",table.concat(fruits,", "))
--concatenate fruits based on index
print("Concatenated string ",table.concat(fruits,", ", 2,3))
當我們運行上面的程序,會得到下面的輸出
Concatenated string banana, orange, apple
Concatenated string orange, apple
插入和刪除
插入在表中的項目,并除去最常見于表操縱。它下面的解釋。
-- insert a fruit at the end
table.insert(fruits,"mango")
print("Fruit at index 4 is ",fruits[4])
--insert fruit at index 2
table.insert(fruits,2,"grapes")
print("Fruit at index 2 is ",fruits[2])
print("The maximum elements in table is",table.maxn(fruits))
print("The last element is",fruits[5])
table.remove(fruits)
print("The previous last element is",fruits[5])
當我們運行上面的程序,會得到下面的輸出
Fruit at index 2 is grapes
The maximum elements in table is 5
The last element is mango
The previous last element is nil
排序表格
排序表通常需要和排序函數(shù)表中的元素按字母順序排序。下圖所示為這方面的一個范例。
for k,v in ipairs(fruits) do
print(k,v)
end
table.sort(fruits)
print("sorted table")
for k,v in ipairs(fruits) do
print(k,v)
end
當我們運行上面的程序,會得到下面的輸出
2 orange
3 apple
4 grapes
sorted table
1 apple
2 banana
3 grapes
4 orange
相關文章
Ruby程序中發(fā)送基于HTTP協(xié)議的請求的簡單示例
這篇文章主要介紹了Ruby程序中發(fā)送基于HTTP協(xié)議的請求的簡單示例,包括對HTTPS請求的介紹,需要的朋友可以參考下2016-03-03

