Eseguire app ZIO
ZIOAppDefault
Eseguire app ZIO è una lezione Scala for Backend Engineering & Functional Programming gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Scala for Backend Engineering & Functional Programming, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Scala for Backend Engineering & Functional Programming include 4 lezioni in totale.
Dalla descrizione all'esecuzione
Un valore ZIO è solo un progetto. Per eseguirlo, lo si passa al runtime di ZIO, in genere estendendo ZIOAppDefault invece di chiamare direttamente il runtime.
ZIOAppDefault
Estenda ZIOAppDefault e implementi run. Il framework fornisce servizi predefiniti (Console, Clock, Random, System) e gestisce l'avvio e l'arresto.
import zio._
object Hello extends ZIOAppDefault {
def run = Console.printLine("Hello, ZIO!")
}Il valore run
run è uno ZIO il cui ambiente è soddisfatto dai servizi predefiniti. I tipi dell'errore e del successo sono flessibili; il runtime segnala gli errori e imposta il codice di uscita.
Un'applicazione in più passaggi
Componi la logica dell'applicazione con una for-comprehension. Ogni riga è un effetto eseguito in sequenza dal runtime.
import zio._
object Greeter extends ZIOAppDefault {
def run = for {
_ <- Console.printLine("What is your name?")
name <- Console.readLine
_ <- Console.printLine(s"Hello, $name!")
} yield ()
}Fornitura dei layer in run
Se l'applicazione dipende da servizi personalizzati, fornisca i relativi layer con provide sull'effetto run, così l'ambiente sarà completamente soddisfatto prima dell'esecuzione.
import zio._
object App extends ZIOAppDefault {
// def run = program.provide(MyService.layer)
def run = ZIO.unit
}Codici di uscita
Per impostazione predefinita, un run completato correttamente termina con il codice 0, mentre un errore produce un codice diverso da zero. È anche possibile restituire un ExitCode esplicito usando exitCode.
import zio._
object App extends ZIOAppDefault {
def run = Console.printLine("done").exitCode
}Argomenti della riga di comando
Acceda agli argomenti del programma con ZIOAppArgs tramite ZIOApp.args o getArgs; viene restituito un Chunk[String].
import zio._
object App extends ZIOAppDefault {
def run = for {
args <- getArgs
_ <- Console.printLine(s"args: ${args.mkString(", ")}")
} yield ()
}Gestione degli errori al confine
È buona pratica gestire o registrare gli errori al livello superiore, affinché il runtime stampi un messaggio chiaro. Usi catchAll o tapError in run.
import zio._
object App extends ZIOAppDefault {
val logic = ZIO.fail("oops")
def run = logic.catchAll(e => Console.printLine(s"Failed: $e"))
}Creazione di fiber
All'interno di run è possibile eseguire gli effetti su fiber con fork per ottenere la concorrenza e successivamente unirli con join. Il runtime supervisiona tutti i fiber e li interrompe durante l'arresto.
import zio._
val prog = for {
fiber <- ZIO.succeed(40).fork
result <- fiber.join
_ <- Console.printLine(s"got $result")
} yield ()Esecuzione manuale unsafe
Al di fuori di ZIOAppDefault è possibile eseguire un effetto con Unsafe.unsafe e un Runtime, ma questa modalità è riservata ai confini di integrazione, non al normale codice dell'applicazione.
import zio._
// Unsafe.unsafe { implicit u =>
// Runtime.default.unsafe.run(myEffect).getOrThrow()
// }main in Scala semplice
Per confronto, un punto di ingresso Scala autonomo. ZIOAppDefault svolge il ruolo di main, ma configura anche i servizi, la segnalazione degli errori e la supervisione dei fiber.
object Main {
def main(args: Array[String]): Unit = {
println("Hello, ZIO!")
}
}Verifica rapida
Qual è il modo consigliato per eseguire un'applicazione ZIO?
Riepilogo
Ha imparato a eseguire le applicazioni ZIO:
ZIOAppDefaultcon un effettorun- servizi predefiniti e
providedei layer - codici di uscita, argomenti e gestione degli errori al livello superiore
- creazione di fiber e confini unsafe
Ha completato il corso Fondamenti di ZIO.
Impara Scala con un tutor IA — gratis
Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.
- Corsi
- 39
- Lezioni
- 143
Domande Frequenti
La lezione «Eseguire app ZIO» è gratuita?
Sì — il testo completo di «Eseguire app ZIO» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Scala for Backend Engineering & Functional Programming, passa a CoddyKit PRO. Il corso Scala for Backend Engineering & Functional Programming include 4 lezioni in totale.
Cosa imparerò in «Eseguire app ZIO»?
ZIOAppDefault Eserciti Scala for Backend Engineering & Functional Programming con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Scala for Backend Engineering & Functional Programming?
Non è richiesta alcuna esperienza precedente. Scala for Backend Engineering & Functional Programming su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.
Quanto tempo richiede la lezione «Eseguire app ZIO»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Scala for Backend Engineering & Functional Programming?
Sì. Ogni lezione Scala for Backend Engineering & Functional Programming include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- L'effetto ZIO
- Comporre ZIO
- Canali degli errori e delle dipendenze
- Eseguire app ZIO