Tables là cấu trúc dữ liệu duy nhất có sẵn trong Lua và cực kỳ linh hoạt. Chúng có thể được sử dụng để biểu diễn mảng, từ điển, bản ghi và nhiều hơn nữa.
Một table trong Lua được tạo bằng dấu ngoặc nhọn {}. Dưới đây là một table đơn giản chứa một số loại trái cây:
fruits = {"apple", "banana", "mango"}
Bạn có thể truy cập các phần tử trong table bằng chỉ số của chúng. Table trong Lua sử dụng chỉ số bắt đầu từ 1.
print(fruits[1]) -- Kết quả: apple print(fruits[2]) -- Kết quả: banana print(fruits[3]) -- Kết quả: mango
Để thêm phần tử vào một table, bạn có thể dùng hàm table.insert. Để xóa phần tử, dùng hàm table.remove.
table.insert(fruits, "orange") print(fruits[4]) -- Kết quả: orange
table.remove(fruits, 2) -- Xóa "banana" print(fruits[2]) -- Kết quả: mango
Bạn cũng có thể tạo table mà không dùng chỉ số số học. Những table này thường được gọi là từ điển (dictionary) hoặc bản đồ (map).
person = { name = "John", age = 30, city = "Jakarta" }
Truy cập các phần tử trong table bằng khóa (key) của chúng:
print(person.name) -- Kết quả: John print(person.age) -- Kết quả: 30 print(person.city) -- Kết quả: Jakarta
Tables có thể chứa cả phần tử có chỉ số và phần tử có tên.
mixedTable = { "apple", "banana", name = "Fruit Basket", count = 2 }
print(mixedTable[1]) -- Kết quả: apple print(mixedTable[2]) -- Kết quả: banana print(mixedTable.name) -- Kết quả: Fruit Basket print(mixedTable.count) -- Kết quả: 2
Bạn có thể duyệt qua các phần tử có chỉ số bằng ipairs và duyệt qua tất cả các phần tử (cả có chỉ số và có tên) bằng pairs.
-- Duyệt qua phần tử có chỉ số for i, fruit in ipairs(fruits) do print("Fruit " .. i .. ": " .. fruit) end
-- Duyệt qua tất cả phần tử for key, value in pairs(person) do print(key .. ": " .. value) end
Tables có thể chứa các table khác, cho phép bạn tạo ra các cấu trúc dữ liệu phức tạp.
nestedTable = { fruits = {"apple", "banana"}, vegetables = {"carrot", "lettuce"} }
print(nestedTable.fruits[1]) -- Kết quả: apple print(nestedTable.vegetables[2]) -- Kết quả: lettuce
Lua cung cấp một số hàm tích hợp để thao tác với table:
Ví dụ:
-- Sắp xếp một table numbers = {5, 2, 9, 1, 5, 6} table.sort(numbers) for i, num in ipairs(numbers) do print(num) end
-- Kết quả: -- 1 -- 2 -- 5 -- 5 -- 6 -- 9
-- Nối các giá trị trong table thành chuỗi str = table.concat(fruits, ", ") print(str) -- Kết quả: apple, banana, mango, orange
Tables trong Lua rất linh hoạt và mạnh mẽ, cho phép bạn tạo ra nhiều cấu trúc dữ liệu khác nhau để phù hợp với nhu cầu của mình. Dù bạn cần mảng đơn giản, từ điển hay cấu trúc lồng nhau phức tạp, tables đều có thể đáp ứng được.
Để biết thêm thông tin chi tiết, bạn có thể tham khảo: [Tài liệu Lua chính thức]
(https://www.lua.org/manual/5.4/manual.html#6)