Lua - Tables as Arrays



Introduction

Array is an ordered arrangement of objects, which may be a one-dimensional array containing a collection of rows or a multi-dimensional array containing multiple rows and columns.

In Lua, arrays are implemented using indexing tables with integers. The size of an array is not fixed and it can grow based on our requirements, subject to memory constraints. We should ensure that arrays indexes are continous.

Example - Creation and Manipulation of Array

Arrays can be created in Lua using a constructor expression {} as an empty array. Then using a numeric for loop, we can assign values to the array as shown below.

main.lua

-- empty array
array = {}

-- assign values to the array
for i=1, 10 do
   array[i] = i
end

-- add a value to the array
array[11] = 11

-- get a value of Array
print(array[5])

-- if index is not present, output will be nil
print(array[12])

Output

When you build and execute the above program, it produces the following result −

5
nil

Example - Creation and Manipulation of Array with negative indexes

By default, array index starts from 1 instead of 0 like in C, Java languages. But as array is implemented using tables, we can use negative indexes as well.

main.lua

-- empty array
array = {}

-- assign values to the array
for i= -5, 5  do
   array[i] = i
end

-- add a value to the array
array[6] = 6

-- get a value of Array
print(array[-2])

-- if index is not present, output will be nil
print(array[-6])

Output

When you build and execute the above program, it produces the following result −

-2
nil

Example - Creation and Initialization of Array in single statement

We can initialize an array while creation as well. In example below, we've created arrays of numbers and strings.

main.lua

-- array of numbers
numbers = { 1, 2, 3, 4, 5 }

-- arrays of names
names = {"Robert", "Julia", "Adam" }

-- print a number at index 3
print(numbers[3])

-- print a name at index 2
print(names[2])

Output

When you build and execute the above program, it produces the following result −

3
Julia

Example - Traversing through an array

Array is implemented by tables and is using numeric indexes. So it is best to navigate using ipairs() iterator to get all values of an array as shown below:

main.lua

-- array of numbers
numbers = { 11, 12, 13, 14, 15 }

-- print all numbers
for index, number in ipairs(numbers) do
   print(index, number)
end

-- arrays of names
names = {"Robert", "Julia", "Adam" }

-- print all names
for index, name in ipairs(names) do
   print(index, name)
end

Output

When you build and execute the above program, it produces the following result −

1	11
2	12
3	13
4	14
5	15
1	Robert
2	Julia
3	Adam
Advertisements