Lua crash course

Following crash course is an extremely condensed extract from the official Lua reference manual. For more details refer to the Lua website and to the numerous examples contained in the demo scenes.


Lexical conventions
  • Lua is a case sensitive language. "and", "And" or "AND" are not the same.
  • Following are Lua keywords:
    and       break     do        else      elseif
    end       false     for       function  if
    in        local     nil       not       or
    repeat    return    then      true      until     while
  • Following strings denote other tokens:
    +     -     *     /     %     ^     #
    ==    ~=    <=    >=    <     >     =
    (     )     {     }     [     ]
    ;     :     ,     .     ..    ...
  • Literal strings can be delimited by matching single or double quotes (e.g. 'hello' or "hello")
  • A comment starts with a double hyphen (--) anywhere outside of a string. e.g.:
    a=4 -- variable a is now 4!

  • Values and types
  • Lua is a dynamically typed language which means that variables do not have types; only values do.
  • There are 8 basic types in Lua:
    nil       type of the value nil whose main property is to be different from any other value.
              It usually represents the absence of a useful value
    boolean   values false and true (both nil and false make a condition false;
              any other value makes it true)
    number    real numbers
    string    arrays of characters (strings may contain any 8-bit character,
              including embedded zeros)
    function  Lua functions
    userdata  can hold arbitrary C data (corresponds to a block of raw memory)
    thread    independent threads of execution used to implement coroutines
    table     arrays that can hold values of any type except nil

  • Variables
  • There are 3 kinds of variables: global variables, local variables and table fields. Any variable is assumed to be global unless explicitely declared as local
  • Before the first assignment to a variable, its value is nil
  • Square brackets are used to index a table (e.g. value=table[x]). The first value in a table is at position 1 (and not 0 as for C arrays)


  • Statements
  • Lua allows multiple assignments. The syntax for assignments defines a list of variables on the left side and a list of expressions on the right side. The elements in both lists are separated by commas:
    x,y,z = myTable[1],myTable[2],myTable[3]
  • Relational operators (always result in false or true)
    ==     equality
    ~=     negation of equality
    <      smaller than
    >      bigger than
    <=     smaller or equal than
    >=     bigger or equal than
  • If control structure (by example):
    if value1==value2 then
        print('value1 and value2 are same!')
    end
  • For control structure (by example):
    for i=1,4,1 do -- count from 1 to 4 with increments of 1
        print(i)
    end
  • While control structure (by example):
    i=0
    while i~=4 do
    i=i+1
    end
  • Repeat control structure (by example):
    i=0
    repeat
    i=i+1
    until i==4
  • Table operations (by example):
    myTable={'firstValue',2,3} -- builds a table with 3 values
    print(myTable[1]) -- prints the first element in the table
    table.insert(myTable,4) -- appends the number 4 to the table
  • Concatenation (by example):
    a=' hello'
    b=' world'
    c=a..b -- c contains 'hello world'
  • Length operator #:
    stringLength=#'hello world'
    tableSize=#{1,2,3,4,5}

  • Recommended topics

  • Lua website
  • Embedded scripts