此初版是為 Lua 5.0 所撰寫。儘管對於後續版本來說仍有很大的關聯性,但仍有一些差異。
第四版針對 Lua 5.3,可在 Amazon 及其他書店購買。
購買此書,您也同時幫助 支援 Lua 專案。
![]() |
程式設計於 Lua | ![]() |
第三部分。標準函式庫 第 19 章。表格函式庫 |
table
函式庫提供函式,用於在清單的任意位置插入和移除元素。table.insert
函式在陣列的指定位置插入一個元素,並將其他元素向上移動以騰出空間。此外,insert
會增加陣列的大小(使用 setn
)。例如,如果 a
是陣列 {10, 20, 30}
,在呼叫 table.insert(a, 1, 15)
之後,a
將會變成 {15, 10, 20, 30}
。作為一個特殊(且頻繁)的情況,如果我們在沒有指定位置的情況下呼叫 insert
,它會在陣列的最後一個位置插入元素(因此,不會移動任何元素)。舉例來說,以下程式碼會逐行讀取程式輸入,並將所有行儲存在一個陣列中
a = {} for line in io.lines() do table.insert(a, line) end print(table.getn(a)) --> (number of lines read)
table.remove
函式會從陣列的指定位置移除(並傳回)一個元素,並將其他元素向下移動以填補空間,並減少陣列的大小。在沒有指定位置的情況下呼叫時,它會移除陣列的最後一個元素。
有了這兩個函式,就可以輕鬆地實作堆疊、佇列和雙端佇列。我們可以將這些結構初始化為 a = {}
。推入操作等於 table.insert(a, x)
;彈出操作等於 table.remove(a)
。若要插入到結構的另一端,我們使用 table.insert(a, 1, x)
;若要從那一端移除,我們使用 table.remove(a, 1)
。最後兩個操作並非特別有效率,因為它們必須將元素向上或向下移動。然而,由於 table
函式庫使用 C 來實作這些函式,因此這些迴圈不會太耗費資源,而且此實作對於小型陣列(例如,最多一百個元素)來說已經夠好了。
版權所有 © 2003–2004 Roberto Ierusalimschy。保留所有權利。 | ![]() |