Scala for Backend Engineering & Functional Programming · Lezione

Eseguire app ZIO

ZIOAppDefault

Lezione 4 di 413 passaggi

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:

  • ZIOAppDefault con un effetto run
  • servizi predefiniti e provide dei 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.

Gratis per iniziare

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

  1. L'effetto ZIO
  2. Comporre ZIO
  3. Canali degli errori e delle dipendenze
  4. Eseguire app ZIO
← Torna a Scala for Backend Engineering & Functional Programming