====== Tables in Lua ======
===== Introduction =====
Tables are the only data structure available in Lua and are incredibly versatile. They can be used to represent arrays, dictionaries, records, and more.
===== Basic Tables =====
A table in Lua is created using curly braces `{}`. Here is a simple table with some fruits.
fruits = {"apple", "banana", "mango"}
You can access elements in the table using their indices. Lua tables are 1-based.
print(fruits[1]) -- Output: apple
print(fruits[2]) -- Output: banana
print(fruits[3]) -- Output: mango
===== Adding and Removing Elements =====
To add elements to a table, you can use the `table.insert` function. To remove elements, use the `table.remove` function.
table.insert(fruits, "orange")
print(fruits[4]) -- Output: orange
table.remove(fruits, 2) -- Removes "banana"
print(fruits[2]) -- Output: mango
===== Unindexed Tables =====
You can also have tables without numeric indices. These are often referred to as dictionaries or maps.
person = {
name = "John",
age = 30,
city = "Jakarta"
}
Access elements in the table using their keys.
print(person.name) -- Output: John
print(person.age) -- Output: 30
print(person.city) -- Output: Jakarta
===== Mixed Tables =====
Tables can have both indexed and named elements.
mixedTable = {
"apple",
"banana",
name = "Fruit Basket",
count = 2
}
print(mixedTable[1]) -- Output: apple
print(mixedTable[2]) -- Output: banana
print(mixedTable.name) -- Output: Fruit Basket
print(mixedTable.count) -- Output: 2
===== Iterating Over Tables =====
You can iterate over indexed tables using `ipairs` and over all elements (indexed and named) using `pairs`.
-- Iterating over indexed elements
for i, fruit in ipairs(fruits) do
print("Fruit " .. i .. ": " .. fruit)
end
-- Iterating over all elements
for key, value in pairs(person) do
print(key .. ": " .. value)
end
===== Nested Tables =====
Tables can contain other tables, allowing you to create complex data structures.
nestedTable = {
fruits = {"apple", "banana"},
vegetables = {"carrot", "lettuce"}
}
print(nestedTable.fruits[1]) -- Output: apple
print(nestedTable.vegetables[2]) -- Output: lettuce
===== Table Functions =====
Lua provides several built-in functions for table manipulation.
* `table.insert(table, [pos,] value)` - Inserts a value into a table.
* `table.remove(table, [pos])` - Removes a value from a table.
* `table.sort(table, [comp])` - Sorts a table in-place.
* `table.concat(table, [sep [, i [, j]]])` - Concatenates table values into a string.
-- Sorting a table
numbers = {5, 2, 9, 1, 5, 6}
table.sort(numbers)
for i, num in ipairs(numbers) do
print(num)
end
-- Output:
-- 1
-- 2
-- 5
-- 5
-- 6
-- 9
-- Concatenating table values into a string
str = table.concat(fruits, ", ")
print(str) -- Output: apple, banana, mango, orange
===== Conclusion =====
Tables in Lua are flexible and powerful, allowing you to create various data structures to suit your needs. Whether you need simple arrays, dictionaries, or complex nested structures, tables can handle it all.
For more detailed information, you can refer to the [Lua Documentation](https://www.lua.org/manual/5.4/manual.html#6).
===== References =====
* [Lua.org](https://www.lua.org/)
* [Learn Lua in Y Minutes](https://learnxinyminutes.com/docs/lua/)