Table of Contents
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/)