Ejecución de aplicaciones ZIO
ZIOAppDefault
Ejecución de aplicaciones ZIO es una lección gratuita de Scala for Backend Engineering & Functional Programming en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Scala for Backend Engineering & Functional Programming, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Scala for Backend Engineering & Functional Programming incluye 4 lecciones en total.
De la descripción a la ejecución
Un valor ZIO es únicamente un esquema. Para ejecutarlo, debe entregarlo al runtime de ZIO, normalmente extendiendo ZIOAppDefault en lugar de llamar manualmente al runtime.
ZIOAppDefault
Extienda ZIOAppDefault e implemente run. El framework proporciona servicios predeterminados (Console, Clock, Random, System) y gestiona el inicio y el cierre.
import zio._
object Hello extends ZIOAppDefault {
def run = Console.printLine("Hello, ZIO!")
}El valor run
run es un ZIO cuyo entorno queda satisfecho mediante los servicios predeterminados. Sus tipos de error y de éxito son flexibles; el runtime informa de los fallos y establece el código de salida.
Una aplicación de varios pasos
Componga la lógica de la aplicación con una for-comprehension. Cada línea es un efecto que el runtime ejecuta secuencialmente.
import zio._
object Greeter extends ZIOAppDefault {
def run = for {
_ <- Console.printLine("What is your name?")
name <- Console.readLine
_ <- Console.printLine(s"Hello, $name!")
} yield ()
}Provisión de capas en run
Si su aplicación depende de servicios personalizados, proporcione sus capas con provide sobre el efecto run, para que el entorno quede completamente satisfecho antes de la ejecución.
import zio._
object App extends ZIOAppDefault {
// def run = program.provide(MyService.layer)
def run = ZIO.unit
}Códigos de salida
De forma predeterminada, un run correcto termina con el código 0 y uno fallido, con un código distinto de cero. También puede devolver un ExitCode explícito mediante exitCode.
import zio._
object App extends ZIOAppDefault {
def run = Console.printLine("done").exitCode
}Argumentos de la línea de comandos
Acceda a los argumentos del programa con ZIOAppArgs mediante ZIOApp.args o getArgs, que devuelven un Chunk[String].
import zio._
object App extends ZIOAppDefault {
def run = for {
args <- getArgs
_ <- Console.printLine(s"args: ${args.mkString(", ")}")
} yield ()
}Gestión de fallos en el límite
Es recomendable gestionar o registrar los errores en el nivel superior para que el runtime muestre un mensaje claro. Use catchAll o tapError en run.
import zio._
object App extends ZIOAppDefault {
val logic = ZIO.fail("oops")
def run = logic.catchAll(e => Console.printLine(s"Failed: $e"))
}Bifurcación de fibers
Dentro de run puede aplicar fork a los efectos para ejecutarlos de forma concurrente en fibers y posteriormente aplicarles join. El runtime supervisa todos los fibers y los interrumpe durante el cierre.
import zio._
val prog = for {
fiber <- ZIO.succeed(40).fork
result <- fiber.join
_ <- Console.printLine(s"got $result")
} yield ()Ejecución manual no segura
Fuera de ZIOAppDefault puede ejecutar un efecto con Unsafe.unsafe y un Runtime, pero esto se reserva para los límites de integración, no para el código habitual de la aplicación.
import zio._
// Unsafe.unsafe { implicit u =>
// Runtime.default.unsafe.run(myEffect).getOrThrow()
// }main de Scala básico
Como comparación, un punto de entrada autónomo de Scala. ZIOAppDefault desempeña el papel de main, pero conecta los servicios, la notificación de errores y la supervisión de fibers.
object Main {
def main(args: Array[String]): Unit = {
println("Hello, ZIO!")
}
}Comprobación rápida
¿Cuál es la forma recomendada de ejecutar una aplicación ZIO?
Repaso
Ha aprendido a ejecutar aplicaciones ZIO:
ZIOAppDefaultcon un efectorun- servicios predeterminados y
providede capas - códigos de salida, argumentos y gestión de errores en el nivel superior
- bifurcación de fibers y límites no seguros
Ha completado el curso Fundamentos de ZIO.
Aprende Scala con un tutor de IA — gratis
Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.
- Cursos
- 39
- Lecciones
- 143
Preguntas frecuentes
¿La lección «Ejecución de aplicaciones ZIO» es gratis?
Sí — el texto completo de «Ejecución de aplicaciones ZIO» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Scala for Backend Engineering & Functional Programming, actualiza a CoddyKit PRO. El curso de Scala for Backend Engineering & Functional Programming incluye 4 lecciones en total.
¿Qué aprenderé en «Ejecución de aplicaciones ZIO»?
ZIOAppDefault Practicas Scala for Backend Engineering & Functional Programming con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Scala for Backend Engineering & Functional Programming?
No se requiere experiencia previa. Scala for Backend Engineering & Functional Programming en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.
¿Cuánto tiempo toma la lección «Ejecución de aplicaciones ZIO»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Scala for Backend Engineering & Functional Programming?
Sí. Cada lección de Scala for Backend Engineering & Functional Programming incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- El efecto ZIO
- Composición de ZIO
- Canales de errores y dependencias
- Ejecución de aplicaciones ZIO