Mục lục
Bảng (Tables) trong Lua
Giới thiệu
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.
Tables cơ bản
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 và xóa phần tử
Để 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
Tables không có chỉ số
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 hỗn hợp
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
Duyệt qua các table
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 lồng nhau
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
Các hàm làm việc với table
Lua cung cấp một số hàm tích hợp để thao tác với table:
- table.insert(table, [pos,] value) - Chèn một giá trị vào table.
- table.remove(table, [pos]) - Xóa một giá trị khỏi table.
- table.sort(table, [comp]) - Sắp xếp table tại chỗ.
- table.concat(table, [sep [, i [, j]]]) - Nối các giá trị trong table thành chuỗi.
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
Kết luận
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)
Tài liệu tham khảo
- Lua.org: (https://www.lua.org/)
- Learn Lua in Y Minutes: (https://learnxinyminutes.com/docs/lua/)