👽
3ntr0 Apuntes
  • 📚Principios SOLID y Clean Code
    • 💲Deuda Técnica
    • 📌Mejorar Nombres
      • 📄Nombre según Tipo
      • 🚗Nombre Clases
      • ⚙️Nombres Funciones
    • ☑️Mejorar Funciones
    • ➿Principio DRY
    • 🧼Clean Code en Clases (POO)
      • 📘 Principio de Responsabilidad Única (SRP)
    • 🤮🇸 🇹 🇺 🇵 🇮 🇩 - Code Smells
      • 🚫Singleton
      • 🙏Tight Coupling
      • 🥸U P I D
      • 🚩Más Code Smells
  • 💕Angular
    • 🏍️Standalone
    • 🆚ngClass vs [class.clase]
    • 🩻Directivas
    • 🚩ElementRef
    • 🎀Decoradores
      • @HostListener
    • 🔄OnChanges
    • 🧪Testing - Jasmine y Karma
      • 🚀Módulo 1: Introducción a las pruebas unitarias
      • 🧫Módulo 2: Introducción a Jasmine
      • ⚒️Módulo 3: Introducción a Karma
      • 🔬Módulo 4: Pruebas unitarias en Angular
        • Código comentado Paso a Paso
      • 🕵️‍♂️Módulo 5: Técnicas avanzadas en Jasmine
      • 📚Módulo 6: Técnicas avanzadas en Karma
  • 🖼️HTML y CSS
    • 🖌️Custom Properties
    • Trucos
    • Brakepoints
  • 🧋Javascript
    • 🛠️Funciones
    • 📦Arrays
      • Every y Some
      • Map
      • Reduce
    • 😎Hoisting
    • 🪚Desestructuración
    • 🛻Programación Asincrona
      • 📞Callbacks
      • 🌟Promises
      • 🆚Promise.all Y Promise.any
      • 🚀Async/Await
    • Respuestas HTTP
    • 🧐Dudas Básicas
      • NodeList
      • 🧐Contextos de .this
      • 💭Parametro Rest
      • 🗨️arguments
      • 🙀JavaScript no tiene clases
      • 🆚Null vs Undefined
      • 🔎Operador in
      • 🟨Operador Spread
      • ❓Encadenamiento Opcional
      • 🔲Notación de Corchetes
      • ⛓️Coalescencia Nula (??)
      • 🆚Shallow Copy vs Deep Copy
      • 🆚.json VS JSON.parse
      • ⚙️Fetch wrapper
      • Sets
      • Maps
  • 📒Terminología
    • 💎Esenciales
    • Web
    • Javascript
  • 🌐GIT
    • Source Tree
  • 🧬React
    • 🫂Babel
  • 🔧 Fundamentos de C#
    • 🎛️General
      • 🧐Diferencia Equals y ==
      • 🧐Diferencia entre typeof y .GetType()
      • 📐Convenciones de Nomenclatura
    • 💠Summary
    • 📇.resx
    • 📄Strings
      • ⛓️Comparación de cadenas
    • 🧲Regex
    • 📦POO
      • 🚙Clases
        • ✏️Clase String
        • 📥Métodos de Acceso
        • ⚗️Métodos de Extensión
    • 🖇️Pattern Matching
    • 🚩Excepciones
    • Programación Asíncrona
    • 🔎LINQ
      • 🅿️PLINQ
  • 🌐 Desarrollo Web con ASP.NET
    • 🧬Modelos
      • 🗒️Data Annotations
        • 📑Lista
        • 🧪Atributos
          • 🛠️Atributos Personalizados
          • 🧰AttributeUsage
          • 📥Acceso a los atributos
        • 📚Documentación
    • 👷Servicios
      • ⭐Servicios Singleton
    • ⏳Sesiones
      • 🧭Temp Data
    • DbContext
      • 🔄Eager Loading
    • 🥽Manejo de Datos
      • 🗃️Archivos
        • 📤Subida de Archivos
        • ✏️Leer y Escribir
        • 🕓Manejo de Archivos Temporales
        • 🛡️Validación de Archivos en ASP.NET Core
      • Colecciones
        • 🪜Pila (Stack)
        • 🏇Cola (Queue)
      • 🩻Manejo de XMLs
        • 📂XmlDocument
          • 🎯XPath
        • 🧿XmlReader
    • ❤️Tips y Utilities
      • 🟰StringComparison
    • 🧰Debug Tools
      • 🧭Stopwatch
  • 🚀Razor
    • 🧱Configuración de Proyecto
    • 📃Pages
      • 🔸Método OnGet
      • 🔸Carpeta Models
      • 🔸Partial Pages
    • 🎨Layouts
      • Aplicar CSS A UNA PAGE
    • 🚴‍♂️Routing
    • 🏢_ViewImports
    • ✒️Sintaxis Razor
      • 😀Introducción
      • 📔Expresiones Implícitas
      • 📕Expresiones Explícitas
      • ✍️Renderizar Texto
      • 🧑‍🔬Class Page Model
      • 🔖Tag Helpers
        • 🔹asp-page
        • 🔹asp-append-version
        • 🔹asp-for
        • 🔹asp-items
        • 🔹asp-action y asp-controller
  • 🔮LUA
    • 🎯Fundamentos
    • ⌨️Entrada por Consola
    • 🔗Estructuras de Control
    • ⚒️Funciones
    • 📦Tablas
    • 📚Funciones y Librerías Estándar
    • 🦖POO
Con tecnología de GitBook
En esta página
  • 5.1. Manipulación de Cadenas 📝
  • 5.2. Operaciones Matemáticas 🔢
  • 5.3. Manejo de Tablas 📊
  • 5.4. Conversión de Tipos 🔄
  • 5.5. Manejo de Fechas y Tiempos 🕒
  • 5.6. Manejo de Archivos 📁
  • 5.7. Ejecución de Comandos del Sistema 🖥️
  1. LUA

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

Devuelve la longitud de una cadena.

local texto = "Hola, mundo"
local longitud = string.len(texto)
print(longitud)  -- Salida: 11

5.1.2. 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

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

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

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

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

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 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 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 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

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

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

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

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 devuelve el logaritmo natural (base e) de un número.

local numero = 2.71828
local logaritmo = math.log(numero)
print(logaritmo)  -- Salida: 1 (aproximadamente)
  • math.exp devuelve e 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Cierra un archivo abierto.

local archivo = io.open("test.txt", "r")
-- Operaciones de lectura aquí
archivo:close()

5.6.5. 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

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

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! 😊

AnteriorTablasSiguientePOO

Última actualización hace 9 meses

🔮
📚