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.
|nil||Used to differentiate the value from having some data or no(nil) data.|
|boolean||Includes true and false as values. Generally used for condition checking.|
|number||Represents real(double precision floating point) numbers.|
|string||Represents array of characters.|
|function||Represents a method that is written in C or Lua.|
|userdata||Represents arbitary C data.|
|thread||Represents independent threads of execution and it is used to implement coroutines.|
|table||Represent ordinary arrays, symbol tables, sets, records, graphs, trees, etc, and implements associative arrays. It can hold any value (except nil).|
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.
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(type)) --> function print(type(nil)) --> nil print(type(type(ABC))) --> string
When you build and execute the above program it produces following result on Linux:
string number function function boolean nil string
By default, all the variables will point to nil until they are assigned a value or intitialized. 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.