Lua é uma linguagem interessante, ao estudar um pouco sobre ela notei muitas características que acreditava ser de linguagens modernas.
Lua possuí os seguintes tipos de variáveis:
boolean
function
nil
number
string
table
thread
userdata
Imprimir:
print('texto')Imprimir sem quebra de linha:
io.write('texto')Recebendo número de parâmetros indefinidos:
function numbers(a, b, ...) endRecebendo todos os valores indefinidos:
function numbers(...)
local args = {...}
return args
endRecevendo valores padrões:
function numbers(a = 1, b = 2)
return a + b
endUsando pcall (protect call) para verificar se uma função é válida ou não:
local function divide(a, b)
return a / b
end
local status, result = pcall(divide, 10, 5)
if status and type(result) == 'number' and result ~= math.huge then
print('success: ' .. result)
else
print('error: ' .. result)
endAssert para verificar um erro:
local x = 'string'
local isnumber = assert(type(x) == 'number', 'x not a number')
if isnumber then print('number: ' .. x) end