0Pricing
Scala for Backend Engineering & Functional Programming · Lektion

ZIO kombinieren

flatMap und for

ZIO kombinieren ist eine kostenlose Scala for Backend Engineering & Functional Programming-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Scala for Backend Engineering & Functional Programming-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Scala for Backend Engineering & Functional Programming-Kurs umfasst insgesamt 4 Lektionen.

Sequenzierung mit flatMap

ZIO ist eine Monade, daher verkettet flatMap Effekte, wobei jeder Schritt das Ergebnis des vorherigen verwenden kann. Die Fehler- und Umgebungstypen werden automatisch kombiniert.

import zio._

val prog =
  ZIO.succeed(10).flatMap(n => Console.printLine(s"n = $n"))

for-Comprehension

Die for-Comprehension ist die idiomatische Methode, ZIO-Effekte zu sequenzieren. Sie liest sich wie imperativer Code, bleibt aber rein.

import zio._

val prog = for {
  _    <- Console.printLine("Enter name:")
  name <- Console.readLine
  _    <- Console.printLine(s"Hello, $name")
} yield ()

Fehlertypen kombinieren

Wenn Sie zwei Effekte mit unterschiedlichen Fehlertypen E1 und E2 kombinieren, leitet ZIO den kleinsten gemeinsamen Obertyp E1 with E2 ab, häufig Throwable oder ein versiegeltes Trait.

zip und zipPar

zip kombiniert zwei Effekte sequenziell zu einem Tupel. zipPar führt sie gleichzeitig auf separaten Fasern aus.

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 und zipLeft

*> (zipRight) behält das zweite Ergebnis, <* (zipLeft) das erste. Beide führen die Effekte in der angegebenen Reihenfolge aus.

import zio._

val r = Console.printLine("log") *> ZIO.succeed(99)

foreach

ZIO.foreach führt für jedes Element einer Sammlung einen Effekt aus und sammelt die Ergebnisse – ähnlich wie eine Traverse.

import zio._

val prog = ZIO.foreach(List(1, 2, 3))(n => Console.printLine(n.toString))

foreachPar

ZIO.foreachPar führt den Effekt jedes Elements gleichzeitig aus – ideal für parallele E/A-Vorgänge wie mehrere HTTP-Anfragen.

import zio._

val ids = List(1, 2, 3)
val prog = ZIO.foreachPar(ids)(id => ZIO.succeed(id * 10))

Bedingte Effekte

ZIO.when führt einen Effekt nur aus, wenn eine Bedingung wahr ist, und gibt ein Option des Ergebnisses zurück. ZIO.unless ist die Umkehrung davon.

import zio._

def logIf(debug: Boolean) =
  ZIO.when(debug)(Console.printLine("debugging"))

Schleifen

ZIO.iterate und ZIO.loop erstellen Schleifen mit Effekten. repeatN führt einen Effekt eine festgelegte Anzahl von Malen erneut aus.

import zio._

val ticks = Console.printLine("tick").repeatN(2) // runs 3 times total

Ein kombinierter Workflow

Dieser Workflow berechnet eine Summe und gibt sie aus. Er setzt sich in einer for-Comprehension vollständig aus kleinen ZIO-Schritten zusammen.

import zio._

val workflow = for {
  a <- ZIO.succeed(20)
  b <- ZIO.succeed(22)
  _ <- Console.printLine(s"Sum: ${a + b}")
} yield ()

Entsprechung in einfachem Scala

Zum Vergleich dieselbe Logik in eifrigem, einfachem Scala. ZIO verzögert Effekte und verfolgt sie im Typsystem, erzeugt aber eine identische Ausgabe.

object Main {
  def main(args: Array[String]): Unit = {
    val a = 20
    val b = 22
    println(s"Sum: ${a + b}")
  }
}

Kurze Überprüfung

Welcher Kombinator führt einen Effekt für jedes Element einer Liste gleichzeitig aus?

Zusammenfassung

Sie haben ZIO-Effekte kombiniert mit:

  • flatMap / for zur Sequenzierung
  • zip / zipPar, *>, <*
  • foreach / foreachPar
  • when / unless und Schleifen

Als Nächstes: der Fehler- und der Abhängigkeitskanal.

Häufig gestellte Fragen

Ist die Lektion „ZIO kombinieren“ kostenlos?

Ja — der vollständige Text von „ZIO kombinieren“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Scala for Backend Engineering & Functional Programming-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Scala for Backend Engineering & Functional Programming-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „ZIO kombinieren“?

flatMap und for Du übst Scala for Backend Engineering & Functional Programming mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Scala for Backend Engineering & Functional Programming zu starten?

Keine Vorkenntnisse erforderlich. Scala for Backend Engineering & Functional Programming auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.

Wie lange dauert die Lektion „ZIO kombinieren“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Scala for Backend Engineering & Functional Programming-Lektion Code schreiben und ausführen?

Ja. Jede Scala for Backend Engineering & Functional Programming-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Der ZIO-Effekt
  2. ZIO kombinieren
  3. Fehler- und Abhängigkeitskanäle
  4. ZIO-Apps ausführen
← Zurück zu Scala for Backend Engineering & Functional Programming