Types of values

Lua is a dynamically typed language. There is no defined type in the language. Each value carries its own type.

As you have noticed, values can be stored in variables. They can be manipulated to give a value of any type. This also allows you to pass arguments to other functions and return as results.

The basic types of values that you'll deal with are the following:

  • nil—It is the only type whose value is nil. Any uninitialized variable has nil as its value. Like global variables, it is nil by default and can be assigned nil to delete it.
  • Boolean—The Boolean type has two values, false and true. You will notice that conditional expressions consider false and nil as false and anything else as true.
  • Numbers—Represents real (double-precision floating-point) numbers.
  • String—A String is a sequence of characters. 8-bit characters and embedded zeros are allowed.
  • Tables—A data structure in Lua. It is implemented by an associative array, which is an array that can be indexed not only with numbers, but also with strings or any other value, except nil. (We will discuss more about this in the section Tables later in this chapter).
  • Functions—Known as first-class values of Lua. Typically, functions can be stored in variables, passed as arguments to other functions and returned as results.