Scala for Backend Engineering & Functional Programming · Lezione

L'effetto ZIO

ZIO[R,E,A]

Lezione 1 di 413 passaggi

L'effetto ZIO è una lezione Scala for Backend Engineering & Functional Programming gratuita su CoddyKit. Questa è la lezione 1 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.

Che cos'è ZIO?

ZIO è una libreria per effetti funzionali asincroni, concorrenti e sicuri nella gestione delle risorse. Il tipo fondamentale è ZIO[R, E, A]: una descrizione di un flusso di lavoro che, dato un ambiente R, può fallire con E o avere successo con A.

I tre parametri di tipo

Legga ZIO[R, E, A] come una funzione R => Either[E, A] (in modo asincrono e con effetti):

  • R — ambiente o dipendenze richiesti
  • E — tipo dell'errore in caso di fallimento
  • A — tipo del valore in caso di successo

Alias di tipo

ZIO fornisce alcuni alias pratici:

  • UIO[A] = ZIO[Any, Nothing, A] — non può fallire
  • Task[A] = ZIO[Any, Throwable, A]
  • IO[E, A] = ZIO[Any, E, A]
  • RIO[R, A] = ZIO[R, Throwable, A]

Creare effetti riusciti

ZIO.succeed solleva un valore puro. L'effetto non può fallire, quindi il suo tipo di errore è Nothing.

import zio._

val meaning: UIO[Int] = ZIO.succeed(42)

Creare fallimenti

ZIO.fail crea un effetto fallito con un errore tipizzato. Il tipo del successo è Nothing, perché l'effetto non ha mai successo.

import zio._

val failed: IO[String, Nothing] = ZIO.fail("Something went wrong")

Racchiudere effetti collaterali

ZIO.attempt racchiude un blocco con effetti collaterali che può generare un'eccezione; il tipo dell'errore diventa Throwable (un Task).

import zio._

val parsed: Task[Int] = ZIO.attempt("123".toInt)

Stampare sulla console

Il servizio Console di ZIO fornisce operazioni di stampa che producono effetti. Console.printLine restituisce uno ZIO il cui tipo di errore è IOException.

import zio._

val hello = Console.printLine("Hello, ZIO!")

map

map trasforma il valore di successo, lasciando invariati i canali dell'errore e dell'ambiente.

import zio._

val doubled: UIO[Int] = ZIO.succeed(21).map(_ * 2)

mapError

mapError trasforma il canale dell'errore, utile per convertire gli errori di basso livello in errori specifici del dominio.

import zio._

val e: IO[String, Int] =
  ZIO.fail(404).mapError(code => s"HTTP $code")

Pigrizia e purezza

Come IO di Cats Effect, un valore ZIO è una descrizione pura e lazy. La sua costruzione non esegue alcun effetto; gli effetti vengono eseguiti solo quando il valore viene eseguito sul runtime di ZIO.

Esempio di riferimento in Scala semplice

Per fare un confronto, ecco un programma Scala autonomo ed eager. ZIO rimanderebbe l'esecuzione e traccerebbe gli errori nel tipo, ma l'output sarebbe lo stesso.

object Main {
  def main(args: Array[String]): Unit = {
    val x = 42
    println(s"value: $x")
  }
}

Verifica rapida

In ZIO[R, E, A], che cosa rappresenta il parametro E?

Riepilogo

Ha imparato il tipo di effetto ZIO:

  • ZIO[R, E, A] — ambiente, errore, successo
  • gli alias UIO, Task, IO, RIO
  • succeed, fail, attempt
  • map e mapError

Prossimo argomento: la composizione degli effetti 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 «L'effetto ZIO» è gratuita?

Sì — il testo completo di «L'effetto 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 «L'effetto ZIO»?

ZIO[R,E,A] 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 1 di 4.

Quanto tempo richiede la lezione «L'effetto 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