Lua - Tables: Cổng vào các Cấu trúc Dữ liệu Mạnh mẽ

Giới thiệu

Xin chào các bạn, những người học lập trình! Hôm nay, chúng ta sẽ bắt đầu một hành trình thú vị vào thế giới của các bảng trong Lua. Như một người giáo viên khoa học máy tính gần gũi, tôi rất vui mừng được hướng dẫn các bạn qua khái niệm cơ bản này, là xương sống của lập trình Lua.

Lua - Tables

Các bảng trong Lua giống như dao đa năng của Thụy Sĩ - chúng linh hoạt, mạnh mẽ và khi bạn biết cách sử dụng chúng, bạn sẽ tự hỏi làm thế nào bạn có thể viết mã mà không có chúng! Hãy cùng nhau lặn sâu và giải mã những bí ẩn của các bảng trong Lua.

Đại diện và Sử dụng

Tables là gì?

Trong Lua, bảng là cấu trúc dữ liệu chính (và duy nhất)! Chúng rất linh hoạt và có thể được sử dụng để đại diện cho mảng, danh sách, từ điển, tập hợp và thậm chí là đối tượng. Hãy tưởng tượng chúng như những容器 ma thuật có thể chứa gần như bất kỳ thứ gì!

Hãy bắt đầu với một ví dụ đơn giản:

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

Trong ví dụ này, chúng ta đã tạo một bảng trông giống như một mảng. Nhưng đây là một sự thật kỳ lạ của Lua: unlike most programming languages, Lua's tables start at index 1, not 0!

Bảng cũng có thể hoạt động như từ điển, lưu trữ các cặp khóa-giá trị:

local person = {
name = "Alice",
age = 30,
city = "Wonderland"
}
print(person.name)  -- Output: Alice
print(person["age"])  -- Output: 30

Thấy sao chúng ta có thể truy cập các giá trị bằng cả dấu chấm và dấu vuông? Đó như thể có hai muỗng để ăn суп - sử dụng whichever feels more comfortable!

Chỉnh sửa Bảng

Thêm và Chỉnh sửa các Phần tử

Bảng trong Lua có thể thay đổi, có nghĩa là chúng ta có thể thay đổi chúng sau khi tạo. Hãy xem như thế nào:

local fruits = {"apple", "banana"}
fruits[3] = "cherry"  -- Thêm một phần tử mới
fruits.orange = "citrus"  -- Thêm một cặp khóa-giá trị
fruits.apple = "red fruit"  -- Chỉnh sửa một giá trị hiện có

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

Có phải không tuyệt vời làm sao bảng có thể linh hoạt như vậy? Chúng lớn lên và thay đổi như một giỏ trái cây thực sự!

Kiểm tra Độ Dài của Bảng

Để biết có bao nhiêu phần tử trong một bảng, chúng ta sử dụng toán tử độ dài (#):

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

Nhưng hãy cẩn thận! Điều này chỉ hoạt động đáng tin cậy cho các chuỗi (bảng với các khóa số liên tục bắt đầu từ 1).

Nối Bảng

Lua cung cấp một toán tử tiện lợi để nối các bảng: table.concat(). Đó như một chất keo ma thuật cho các phần tử bảng của bạn!

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

Ở đây, chúng ta đã nối tất cả các phần tử của words với một khoảng trống giữa chúng. Bạn có thể sử dụng bất kỳ dấu phẩy nào bạn thích!

Chèn và Xóa

Chèn các Phần tử

Để thêm các phần tử vào bảng, chúng ta có thể sử dụng 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
-- Output:
-- 1 milk
-- 2 cheese
-- 3 bread
-- 4 eggs

Chú ý rằng chúng ta đã thêm "eggs" vào cuối và "cheese" ở chỉ mục 2? Đó như thể lén thêm các mục vào giỏ hàng của bạn!

Xóa các Phần tử

Để xóa các phần tử, chúng ta sử dụng table.remove():

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

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

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

Đó như một trò chơi Jenga - cẩn thận gỡ bỏ các mảnh mà không làm đổ toàn bộ cấu trúc!

Sắp xếp Bảng

Lua cung cấp một hàm内置 để sắp xếp các bảng: table.sort(). Mặc định, nó sắp xếp theo thứ tự tăng dần:

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

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

Bạn cũng có thể cung cấp một hàm sắp xếp tùy chỉnh:

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
-- Output:
-- 1 9
-- 2 6
-- 3 5
-- 4 4
-- 5 3
-- 6 2
-- 7 1
-- 8 1

Đó như có một trợ lý cá nhân để tổ chức dữ liệu theo cách bạn thích!

Kết luận

Và thế là các bạn đã có, mọi người! Chúng ta đã cùng nhau hành trình qua vùng đất của các bảng trong Lua, từ tạo ra đến chỉnh sửa, nối lại đến sắp xếp. Các bảng là bánh mì và bơ của lập trình Lua, và tôi hy vọng rằng hướng dẫn này đã mang lại cho bạn một hương vị của sức mạnh và linh hoạt của chúng.

Nhớ rằng, thực hành là chìa khóa của sự hoàn hảo. Vậy hãy tạo ra một số bảng, chơi với chúng, và trước khi bạn biết, bạn sẽ thành thạo như một chuyên gia! Chúc các bạn lập trình vui vẻ và các bảng của bạn luôn được tổ chức tốt và không có lỗi!

Credits: Image by storyset