📚Funciones y Librerías Estándar
LUA incluye una serie de funciones y librerías estándar que son fundamentales para realizar operaciones comunes, como manipulación de cadenas, matemáticas, manejo de tablas, conversión de tipos, manejo de fechas y tiempos, y más. A continuación, exploramos estas funciones en detalle.
5.1. Manipulación de Cadenas 📝
LUA proporciona varias funciones para trabajar con cadenas a través de la librería string
.
5.1.1. string.len
string.len
Devuelve la longitud de una cadena.
local texto = "Hola, mundo"
local longitud = string.len(texto)
print(longitud) -- Salida: 11
5.1.2. string.sub
string.sub
Devuelve un subconjunto de la cadena desde el índice de inicio hasta el índice final.
local texto = "Hola, mundo"
local subtexto = string.sub(texto, 1, 4)
print(subtexto) -- Salida: Hola
5.1.3. string.upper
y string.lower
string.upper
y string.lower
Convierte una cadena a mayúsculas o minúsculas.
local texto = "Hola, Mundo"
local mayusculas = string.upper(texto)
local minusculas = string.lower(texto)
print(mayusculas) -- Salida: HOLA, MUNDO
print(minusculas) -- Salida: hola, mundo
5.1.4. string.find
string.find
Busca una subcadena dentro de una cadena y devuelve la posición de inicio y fin de la primera ocurrencia. Si no encuentra la subcadena, devuelve nil
.
local texto = "Hola, mundo"
local inicio, fin = string.find(texto, "mundo")
print(inicio, fin) -- Salida: 7 11
5.1.5. string.gsub
string.gsub
Reemplaza todas las ocurrencias de una subcadena por otra. Devuelve la cadena modificada y el número de sustituciones realizadas.
local texto = "Hola, mundo mundo"
local nuevoTexto, n = string.gsub(texto, "mundo", "Lua")
print(nuevoTexto) -- Salida: Hola, Lua Lua
print(n) -- Salida: 2
5.1.6. string.reverse
string.reverse
Devuelve una nueva cadena que es la inversa de la cadena original.
local texto = "Hola"
local reverso = string.reverse(texto)
print(reverso) -- Salida: aloH
5.1.7. string.format
string.format
Devuelve una cadena formateada. Es similar a printf
en C.
local nombre = "Laura"
local edad = 30
local formattedString = string.format("Hola, soy %s y tengo %d años.", nombre, edad)
print(formattedString) -- Salida: Hola, soy Laura y tengo 30 años.
5.1.8. string.match
y string.gmatch
string.match
y string.gmatch
string.match
busca la primera ocurrencia de un patrón en una cadena y devuelve la parte que coincide.
local texto = "El número es 1234"
local numero = string.match(texto, "%d+")
print(numero) -- Salida: 1234
string.gmatch
devuelve un iterador para encontrar todas las coincidencias de un patrón.
local texto = "uno dos tres"
for palabra in string.gmatch(texto, "%a+") do
print(palabra)
end
-- Salida:
-- uno
-- dos
-- tres
5.2. Operaciones Matemáticas 🔢
LUA tiene una librería matemática (math
) que incluye funciones para realizar operaciones matemáticas comunes.
5.2.1. math.random
y math.randomseed
math.random
y math.randomseed
math.random
devuelve un número aleatorio.
local aleatorio = math.random(1, 100)
print(aleatorio) -- Salida: un número aleatorio entre 1 y 100
math.randomseed
establece la semilla para el generador de números aleatorios. Esto es útil para obtener resultados reproducibles.
math.randomseed(os.time())
print(math.random(1, 100)) -- Salida: un número aleatorio entre 1 y 100
5.2.2. math.floor
y math.ceil
math.floor
y math.ceil
math.floor
redondea un número hacia abajo.
local numero = 5.67
local redondeadoAbajo = math.floor(numero)
print(redondeadoAbajo) -- Salida: 5
math.ceil
redondea un número hacia arriba.
local redondeadoArriba = math.ceil(5.67)
print(redondeadoArriba) -- Salida: 6
5.2.3. math.max
y math.min
math.max
y math.min
Devuelve el valor máximo o mínimo de una lista de números.
local maximo = math.max(1, 5, 3, 9, 2)
local minimo = math.min(1, 5, 3, 9, 2)
print(maximo) -- Salida: 9
print(minimo) -- Salida: 1
5.2.4. math.sqrt
math.sqrt
Devuelve la raíz cuadrada de un número.
local numero = 16
local raizCuadrada = math.sqrt(numero)
print(raizCuadrada) -- Salida: 4
5.2.5. math.abs
math.abs
Devuelve el valor absoluto de un número.
local negativo = -10
local absoluto = math.abs(negativo)
print(absoluto) -- Salida: 10
5.2.6. math.pow
math.pow
Devuelve el resultado de elevar un número a una potencia.
local base = 2
local exponente = 3
local potencia = math.pow(base, exponente)
print(potencia) -- Salida: 8
5.2.7. math.log
y math.exp
math.log
y math.exp
math.log
devuelve el logaritmo natural (basee
) de un número.
local numero = 2.71828
local logaritmo = math.log(numero)
print(logaritmo) -- Salida: 1 (aproximadamente)
math.exp
devuelvee
elevado a la potencia especificada.
local exponente = 1
local exponencial = math.exp(exponente)
print(exponencial) -- Salida: 2.71828 (aproximadamente)
5.3. Manejo de Tablas 📊
LUA ofrece varias funciones útiles para manipular tablas, como insertar, eliminar y ordenar elementos.
5.3.1. table.insert
table.insert
Inserta un valor en una tabla en la posición especificada. Si no se especifica la posición, el valor se añade al final.
local frutas = {"manzana", "banana"}
table.insert(frutas, "cereza")
print(frutas[3]) -- Salida: cereza
5.3.2. table.remove
table.remove
Elimina un valor de una tabla en la posición especificada.
local frutas = {"manzana", "banana", "cereza"}
table.remove(frutas, 2)
print(frutas[2]) -- Salida: cereza
5.3.3. table.sort
table.sort
Ordena una tabla en orden ascendente.
local numeros = {5, 3, 8, 1}
table.sort(numeros)
for i, v in ipairs(numeros) do
print(v) -- Salida: 1 3 5 8
end
5.3.4. table.concat
table.concat
Concatena los elementos de una tabla en una sola cadena, separados por un delimitador opcional.
local frutas = {"manzana", "banana", "cereza"}
local cadena = table.concat(frutas, ", ")
print(cadena) -- Salida: manzana, banana, cereza
5.3.5. table.unpack
table.unpack
Devuelve todos los elementos de una tabla como valores separados.
local frutas = {"manzana", "banana", "cereza"}
local primera, segunda, tercera = table.unpack(frutas)
print(primera, segunda, tercera) -- Salida: manzana banana cereza
5.4. Conversión de Tipos 🔄
En LUA, es común tener que convertir datos de un tipo a otro, especialmente entre cadenas y números.
5.4.1. tonumber
tonumber
Convierte una cadena a un número. Devuelve nil
si la conversión no es posible.
local numero = tonumber("123")
print(numero + 1) -- Salida: 124
5.4.2. tostring
tostring
Convierte un número (u otro valor) a una cadena.
local cadena = tostring(123)
print(cadena .. " es un número") -- Salida: 123 es un número
5.4.3. type
type
Devuelve el tipo de una variable.
local numero = 10
local cadena = "Hola"
print(type(numero)) -- Salida: number
print(type(cadena)) -- Salida: string
5.4.4. toboolean
toboolean
Aunque no existe una función nativa llamada toboolean
, LUA considera como true
cualquier valor que no sea nil
o false
.
local valor = 123
if valor then
print("Es verdadero") -- Salida: Es verdadero
end
5.5. Manejo de Fechas y Tiempos 🕒
LUA ofrece la librería os
para manejar fechas y tiempos.
5.5.1. os.time
os.time
Devuelve el tiempo actual en segundos desde el epoch (1 de enero de 1970).
local tiempoActual = os.time()
print(tiempoActual) -- Salida: número de segundos desde el epoch
5.5.2. os.date
os.date
Formatea una fecha y hora en una cadena o en una tabla con componentes separados (día, mes, año, etc.).
local fecha = os.date("*t")
print(fecha.year) -- Salida: Año actual
print(fecha.month) -- Salida: Mes actual
print(fecha.day) -- Salida: Día actual
Puedes formatear la fecha como una cadena específica:
local fechaFormateada = os.date("%Y-%m-%d %H:%M:%S")
print(fechaFormateada) -- Salida: Fecha y hora actuales en formato YYYY-MM-DD HH:MM:SS
5.5.3. os.difftime
os.difftime
Devuelve la diferencia en segundos entre dos tiempos.
local tiempo1 = os.time()
local tiempo2 = tiempo1 + 3600 -- Una hora después
local diferencia = os.difftime(tiempo2, tiempo1)
print(diferencia) -- Salida: 3600
5.6. Manejo de Archivos 📁
LUA ofrece funciones para manejar archivos a través de la librería io
.
5.6.1. io.open
io.open
Abre un archivo en un modo específico (read
, write
, etc.).
local archivo = io.open("test.txt", "w")
archivo:write("Hola, mundo")
archivo:close()
5.6.2. io.read
io.read
Lee datos de un archivo.
local archivo = io.open("test.txt", "r")
local contenido = archivo:read("*all")
print(contenido) -- Salida: Hola, mundo
archivo:close()
5.6.3. io.write
io.write
Escribe datos en el archivo abierto en el modo de escritura.
local archivo = io.open("test.txt", "a")
archivo:write("\nNuevo contenido")
archivo:close()
5.6.4. io.close
io.close
Cierra un archivo abierto.
local archivo = io.open("test.txt", "r")
-- Operaciones de lectura aquí
archivo:close()
5.6.5. io.lines
io.lines
Itera sobre cada línea de un archivo.
for linea in io.lines("test.txt") do
print(linea)
end
5.7. Ejecución de Comandos del Sistema 🖥️
LUA permite la ejecución de comandos del sistema operativo a través de la función os.execute
.
os.execute("mkdir nueva_carpeta")
5.7.1. os.getenv
os.getenv
Devuelve el valor de una variable de entorno.
local path = os.getenv("PATH")
print(path) -- Salida: valor de la variable de entorno PATH
5.7.2. os.exit
os.exit
Termina la ejecución del programa.
print("Adiós")
os.exit()
Este bloque de código contiene un Tema 5 más amplio sobre las funciones y librerías estándar en LUA, en un formato que puedes copiar y pegar fácilmente. ¡Espero que te sea útil para profundizar aún más en tu aprendizaje de LUA! 😊
Última actualización