Critical Patterns
Table Patterns (REQUIRED)
-- ✅ ALWAYS: Use tables for structured data local user = { name = "John", age = 30, greet = function(self) print("Hello, " .. self.name) end }
user:greet() -- method call with self
Module Pattern (REQUIRED)
-- ✅ ALWAYS: Return table for modules local M = {}
function M.process(data) return data:upper() end
return M
Error Handling (REQUIRED)
-- ✅ Use pcall for protected calls local ok, result = pcall(function() return risky_operation() end)
if not ok then print("Error: " .. result) end
Decision Tree
Need class-like? → Use metatables Need error handling? → Use pcall/xpcall Need iteration? → Use pairs/ipairs Need configuration? → Use external .lua files
Commands
lua script.lua # Run script luac -o out.luac script.lua # Compile luarocks install package # Install package
Resources
-
Best Practices: best-practices.md
-
Performance: performance.md
-
Scripting: scripting.md