Composer ZIO
flatMap et for
Composer ZIO est une leçon Scala for Backend Engineering & Functional Programming gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Scala for Backend Engineering & Functional Programming, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Scala for Backend Engineering & Functional Programming comprend 4 leçons au total.
Enchaînement avec flatMap
ZIO est une monade ; flatMap enchaîne donc les effets, chaque étape pouvant utiliser le résultat précédent. Les types d’erreur et d’environnement sont combinés automatiquement.
import zio._
val prog =
ZIO.succeed(10).flatMap(n => Console.printLine(s"n = $n"))Compréhension for
La compréhension for est la manière idiomatique d’enchaîner les effets ZIO. Elle se lit comme du code impératif tout en restant pure.
import zio._
val prog = for {
_ <- Console.printLine("Enter name:")
name <- Console.readLine
_ <- Console.printLine(s"Hello, $name")
} yield ()Combiner les types d’erreur
Lorsque vous composez deux effets dont les types d’erreur sont différents, E1 et E2, ZIO déduit leur plus petit majorant commun, souvent Throwable ou un trait scellé.
zip et zipPar
zip combine séquentiellement deux effets en un tuple. zipPar les exécute simultanément sur des fibres distinctes.
import zio._
val seq: UIO[(Int, Int)] = ZIO.succeed(1).zip(ZIO.succeed(2))
val par: UIO[(Int, Int)] = ZIO.succeed(1).zipPar(ZIO.succeed(2))zipRight et zipLeft
*> (zipRight) conserve le deuxième résultat ; <* (zipLeft) conserve le premier. Les deux exécutent les effets dans l’ordre.
import zio._
val r = Console.printLine("log") *> ZIO.succeed(99)foreach
ZIO.foreach exécute un effet pour chaque élément d’une collection et rassemble les résultats, comme le ferait un parcours.
import zio._
val prog = ZIO.foreach(List(1, 2, 3))(n => Console.printLine(n.toString))foreachPar
ZIO.foreachPar exécute simultanément l’effet de chaque élément — idéal pour les entrées-sorties parallèles, comme plusieurs requêtes HTTP.
import zio._
val ids = List(1, 2, 3)
val prog = ZIO.foreachPar(ids)(id => ZIO.succeed(id * 10))Effets conditionnels
ZIO.when n’exécute un effet que si une condition est vraie et retourne un Option du résultat. ZIO.unless est l’opération inverse.
import zio._
def logIf(debug: Boolean) =
ZIO.when(debug)(Console.printLine("debugging"))Boucles
ZIO.iterate et ZIO.loop construisent des boucles produisant des effets. repeatN réexécute un effet un nombre fixe de fois.
import zio._
val ticks = Console.printLine("tick").repeatN(2) // runs 3 times totalUn flux de travail composé
Ici, un flux de travail calcule une somme et l’affiche, en étant entièrement composé de petites étapes ZIO dans une compréhension for.
import zio._
val workflow = for {
a <- ZIO.succeed(20)
b <- ZIO.succeed(22)
_ <- Console.printLine(s"Sum: ${a + b}")
} yield ()Équivalent en Scala classique
Voici la même logique en Scala classique et avide, à titre de comparaison. ZIO diffère les effets et les suit dans le système de types, mais produit une sortie identique.
object Main {
def main(args: Array[String]): Unit = {
val a = 20
val b = 22
println(s"Sum: ${a + b}")
}
}Vérification rapide
Quel combinateur exécute simultanément un effet pour chaque élément d’une liste ?
Récapitulatif
Vous avez composé des effets ZIO avec :
flatMap/forpour l’enchaînementzip/zipPar,*>,<*foreach/foreachParwhen/unlesset les boucles
Ensuite : les canaux d’erreur et de dépendances.
Apprends Scala avec un tuteur IA — gratuit
Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.
- Cours
- 39
- Leçons
- 143
Questions Fréquemment Posées
La leçon « Composer ZIO » est-elle gratuite ?
Oui — le texte complet de « Composer ZIO » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Scala for Backend Engineering & Functional Programming, passe à CoddyKit PRO. Le cours Scala for Backend Engineering & Functional Programming comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Composer ZIO » ?
flatMap et for Tu pratiques Scala for Backend Engineering & Functional Programming avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Scala for Backend Engineering & Functional Programming ?
Aucune expérience préalable n'est requise. Scala for Backend Engineering & Functional Programming sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.
Combien de temps prend la leçon « Composer ZIO » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Scala for Backend Engineering & Functional Programming ?
Oui. Chaque leçon Scala for Backend Engineering & Functional Programming inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.