Lua - Data Types



Lua is a dynamically typed language, so the variables don't have types, only the values have types. Values can be stored in variables, passed as parameters and returned as results.

In Lua, though we don't have variable data types, but we have types for the values. The list of data types for values are given below.

Sr.No Value Type & Description
1

nil

Used to differentiate the value from having some data or no(nil) data.

2

boolean

Includes true and false as values. Generally used for condition checking.

3

number

Represents real(double precision floating point) numbers.

4

string

Represents array of characters.

5

function

Represents a method that is written in C or Lua.

6

userdata

Represents arbitrary C data.

7

thread

Represents independent threads of execution and it is used to implement coroutines.

8

table

Represent ordinary arrays, symbol tables, sets, records, graphs, trees, etc., and implements associative arrays. It can hold any value (except nil).

Example - type Function

In Lua, there is a function called 'type' that enables us to know the type of the variable. Some examples are given in the following code.

main.lua

-- print type of text as string
print(type("What is my type"))   --> string
t = 10

-- print type of number
print(type(5.8*t))               --> number
-- print type of boolean
print(type(true))                --> boolean
-- print type of function
print(type(print))               --> function
-- print type of nil
print(type(nil))                 --> nil
-- print type of string
print(type(type(ABC)))           --> string

Output

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

string
number
boolean
function
nil
string

Example - type Function

We can define the type of variables as well and type function works perfectly in this case as well.

main.lua


print(type("What is my type"))   --> string
t = 10

print(type(5.8*t))               --> number
print(type(true))                --> boolean
print(type(print))               --> function
print(type(nil))                 --> nil
print(type(type(ABC)))           --> string

Output

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

string
number
boolean
function
nil
string

Example - Getting type of function

We can get the type of function as well as shown below −

main.lua

-- define a function to compute max of two numbers
function max(num1, num2)

   if (num1 > num2) then
      result = num1;
   else
      result = num2;
   end

   return result;
end

-- get the type of a function
print("The type of the function ",type(max))

-- get the type of result of function
print("The type of the function ",type(max(3,4)))

-- get the result of function
print("The Max Value: ",max(3,4))

Output

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

The type of the function 	function
The type of the function 	number
The Max Value: 	4

By default, all the variables will point to nil until they are assigned a value or initialized. In Lua, zero and empty strings are considered to be true in case of condition checks. Hence, you have to be careful when using Boolean operations. We will know more using these types in the next chapters.

Advertisements