Lua Basics Cheat Sheet

1. Installation

  • Windows:
    Download from https://lua.org/download.html
  • Linux/Mac:
    sudo apt install lua5.3  # Ubuntu  
    brew install lua         # macOS  
    
  • Check Version:
    lua -v  
    

2. Hello World

print("Hello, Lua!")  

3. Variables and Data Types

x = 10           -- Number  
y = "Lua"        -- String  
z = true         -- Boolean  
n = nil          -- Nil (null)  
  • Dynamic Typing: No need to declare types.
  • Multi-assignment:
    a, b, c = 1, "hello", 3.14  
    

4. Comments

-- Single-line comment  
--[[  
  Multi-line comment  
]]  

5. Control Structures

If-Else Statement:

x = 15  
if x > 10 then  
  print("x is greater than 10")  
elseif x == 10 then  
  print("x equals 10")  
else  
  print("x is less than 10")  
end  

While Loop:

i = 1  
while i <= 5 do  
  print(i)  
  i = i + 1  
end  

For Loop:

for i = 1, 5 do  
  print("Loop:", i)  
end  

-- Reverse Loop  
for i = 5, 1, -1 do  
  print(i)  
end  

Repeat-Until (Do-While):

x = 1  
repeat  
  print(x)  
  x = x + 1  
until x > 5  

6. Functions

function greet(name)  
  print("Hello, " .. name)  
end  

greet("Lua")  
  • Returning Values:
    function add(a, b)  
      return a + b  
    end  
    print(add(5, 7))  
    
  • Anonymous Functions:
    square = function(x) return x * x end  
    print(square(4))  
    

7. Tables (Arrays & Dictionaries)

Arrays:

arr = {10, 20, 30, 40}  
print(arr[1])  -- Lua is 1-indexed  

Dictionaries (Key-Value):

dict = {name = "Lua", year = 2024}  
print(dict.name)  

Mixed Table:

person = {name = "John", age = 25, [1] = "Developer"}  
print(person[1])  
print(person.name)  

8. Iterating Over Tables

for key, value in pairs(dict) do  
  print(key, value)  
end  

9. String Manipulation

str = "Lua Programming"  
print(#str)                 -- String length  
print(string.upper(str))    -- Uppercase  
print(string.lower(str))    -- Lowercase  
print(string.sub(str, 1, 3))-- Substring  

10. Operators

Arithmetic:

+  -  *  /  %  ^  -- Power (x^y)  

Relational:

==  ~=  <  >  <=  >=  

Logical:

and  or  not  

11. Metatables and Operator Overloading

setmetatable(t, {__add = function(a, b) return a + b end})  

12. Error Handling

success, msg = pcall(function()  
  error("An error occurred!")  
end)  
if not success then  
  print("Error: " .. msg)  
end  

13. Modules (Import/Export)

Module (math_utils.lua):

local math_utils = {}  
function math_utils.add(a, b)  
  return a + b  
end  
return math_utils  

Import Module:

local math_utils = require("math_utils")  
print(math_utils.add(5, 10))  

14. File I/O

Write to File:

file = io.open("example.txt", "w")  
file:write("Hello, Lua!")  
file:close()  

Read from File:

file = io.open("example.txt", "r")  
content = file:read("*all")  
file:close()  
print(content)  

15. Coroutines (Multitasking)

co = coroutine.create(function()  
  for i = 1, 5 do  
    print(i)  
    coroutine.yield()  
  end  
end)  

coroutine.resume(co)  
coroutine.resume(co)  

16. Object-Oriented Programming (OOP)

Person = {}  
function Person:new(name, age)  
  obj = {name = name, age = age}  
  setmetatable(obj, self)  
  self.__index = self  
  return obj  
end  

john = Person:new("John", 30)  
print(john.name)  

17. Common Lua Functions

Function Description
type() Returns the type of a variable
tostring() Converts to string
tonumber() Converts to number
table.insert() Inserts element into a table
table.remove() Removes element from a table
ipairs() Iterates over array-like tables
pairs() Iterates over key-value tables

Example: FizzBuzz in Lua

for i = 1, 20 do  
  if i % 3 == 0 and i % 5 == 0 then  
    print("FizzBuzz")  
  elseif i % 3 == 0 then  
    print("Fizz")  
  elseif i % 5 == 0 then  
    print("Buzz")  
  else  
    print(i)  
  end  
end  

Related posts

Visual Basic .NET (VB.NET) Basics Cheat Sheet

C# Basics Cheat Sheet

The Sun Basics Cheat Sheet