Lua - 表格:強大數據結構的入門

引言

你好,有抱負的程序员們!今天,我們將踏上一段令人興奮的旅程,探索Lua表格的世界。作為你們親切鄰居的計算機科學老師,我很高興能夠引導你們了解這個Lua編程的基礎概念。

Lua - Tables

Lua中的表格就像瑞士軍刀——它們多用途、強大,一旦你學會如何使用它們,你會想知道沒有它們你如何編過程序!讓我們一起潛入Lua表格的神秘之中。

表示和使用

表格是什麼?

在Lua中,表格是主要的(也是唯一!)數據結構。它們非常靈活,可以用來表示數組、列表、字典、集合,甚至對象。把它們看作是能夠容納各種東西的神奇容器!

讓我們從一個簡單的例子開始:

local myFirstTable = {1, 2, 3, 4, 5}
print(myFirstTable[1])  -- 輸出: 1

在這個例子中,我們創建了一個看起來像數組的表格。但是這裡有一個Lua的有趣事實:與大多數編程語言不同,Lua的表格從索引1開始,而不是0!

表格也可以像字典一樣行為,存儲鍵-值對:

local person = {
name = "Alice",
age = 30,
city = "奇異國"
}
print(person.name)  -- 輸出: Alice
print(person["age"])  -- 輸出: 30

看我們如何使用點語法或方括號來訪問值?這就像有两把湯匙吃你的湯——使用哪一把感覺更舒服!

表格操作

添加和修改元素

Lua中的表格是可變的,這意味著我們可以在創建後更改它們。讓我們看看如何:

local fruits = {"apple", "banana"}
fruits[3] = "cherry"  -- 添加一個新元素
fruits.orange = "citrus"  -- 添加一個鍵-值對
fruits.apple = "red fruit"  -- 修改一個現有的值

print(fruits[3])  -- 輸出: cherry
print(fruits.orange)  -- 輸出: citrus
print(fruits.apple)  -- 輸出: red fruit

表格是多麼靈活啊!它們像真實的水果籃一樣成長和變化!

檢查表格長度

要找出表格中有多少元素,我們使用長度運算符(#):

local numbers = {10, 20, 30, 40, 50}
print(#numbers)  -- 輸出: 5

但是要小心!這只有在序列(從1開始的連續數字鍵的表格)中才可靠地工作。

表格連接

Lua提供了一個方便的運算符來連接表格:table.concat()。它就像你表格元素的神奇膠水!

local words = {"Hello", "world", "from", "Lua"}
local sentence = table.concat(words, " ")
print(sentence)  -- 輸出: Hello world from Lua

在這裡,我們將words中的所有元素用空格連接起來。你可以使用任何分隔符你喜歡!

插入和移除

插入元素

要向表格添加元素,我們可以使用table.insert()

local shopping_list = {"milk", "bread"}
table.insert(shopping_list, "eggs")
table.insert(shopping_list, 2, "cheese")

for i, item in ipairs(shopping_list) do
print(i, item)
end
-- 輸出:
-- 1 milk
-- 2 cheese
-- 3 bread
-- 4 eggs

注意我們是如何將"eggs"添加到末尾,將"cheese"插入到索引2?這就像偷偷將物品放入你的購物車!

移除元素

要移除元素,我們使用table.remove()

local stack = {"plate", "bowl", "cup", "spoon"}
local removed = table.remove(stack)
print(removed)  -- 輸出: spoon

removed = table.remove(stack, 1)
print(removed)  -- 輸出: plate

for i, item in ipairs(stack) do
print(i, item)
end
-- 輸出:
-- 1 bowl
-- 2 cup

這就像玩積木遊戲——小心移除部件而不推翻整個結構!

排序表格

Lua提供了一個內置函數來排序表格:table.sort()。默認情況下,它按升序排序:

local fruits = {"banana", "apple", "cherry", "date"}
table.sort(fruits)

for i, fruit in ipairs(fruits) do
print(i, fruit)
end
-- 輸出:
-- 1 apple
-- 2 banana
-- 3 cherry
-- 4 date

你也可以提供一個自定義排序函數:

local numbers = {3, 1, 4, 1, 5, 9, 2, 6}
table.sort(numbers, function(a, b) return a > b end)

for i, num in ipairs(numbers) do
print(i, num)
end
-- 輸出:
-- 1 9
-- 2 6
-- 3 5
-- 4 4
-- 5 3
-- 6 2
-- 7 1
-- 8 1

這就像有個私人助理來為你組織數據,就像你所喜歡的那樣!

結論

這就是了,各位!我們一起穿越了Lua表格的土地,從創建到操作,連接到排序。表格是Lua編程的基石,希望這個教程能讓你們對它們的強大和靈活性有所了解。

記住,熟能生巧。所以,去吧,創建一些表格,玩弄它們,不久之後,你會像專家一樣玩轉表格!快樂編程,願你的表格永遠結構良好且無蟲害!

Credits: Image by storyset