Scala for Backend Engineering & Functional Programming · Lektion

ZIO-Apps ausführen

ZIOAppDefault

Lektion 4 von 413 Schritte

ZIO-Apps ausführen ist eine kostenlose Scala for Backend Engineering & Functional Programming-Lektion auf CoddyKit. Dies ist Lektion 4 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.

Von der Beschreibung zur Ausführung

Ein ZIO-Wert ist zunächst nur ein Bauplan. Um ihn auszuführen, übergeben Sie ihn der ZIO-Laufzeitumgebung – normalerweise, indem Sie ZIOAppDefault erweitern, statt die Laufzeitumgebung direkt aufzurufen.

ZIOAppDefault

Erweitern Sie ZIOAppDefault und implementieren Sie run. Das Framework stellt Standarddienste (Console, Clock, Random, System) bereit und verwaltet Start und Beenden.

import zio._

object Hello extends ZIOAppDefault {
  def run = Console.printLine("Hello, ZIO!")
}

Der run-Wert

run ist ein ZIO, dessen Umgebung durch die Standarddienste erfüllt wird. Seine Fehler- und Erfolgstypen sind flexibel; die Laufzeitumgebung meldet Fehler und setzt den Exit-Code.

Eine Anwendung mit mehreren Schritten

Setzen Sie die Anwendungslogik mit einer for-Comprehension zusammen. Jede Zeile ist ein Effekt, der von der Laufzeitumgebung sequenziell ausgeführt wird.

import zio._

object Greeter extends ZIOAppDefault {
  def run = for {
    _    <- Console.printLine("What is your name?")
    name <- Console.readLine
    _    <- Console.printLine(s"Hello, $name!")
  } yield ()
}

Layer in run bereitstellen

Wenn Ihre Anwendung benutzerdefinierte Dienste benötigt, stellen Sie deren Layer mit provide für den run-Effekt bereit, damit die Umgebung vor der Ausführung vollständig erfüllt ist.

import zio._

object App extends ZIOAppDefault {
  // def run = program.provide(MyService.layer)
  def run = ZIO.unit
}

Exit-Codes

Standardmäßig wird ein erfolgreiches run mit Code 0 und ein fehlgeschlagenes mit einem Code ungleich 0 beendet. Sie können mit exitCode auch einen expliziten ExitCode zurückgeben.

import zio._

object App extends ZIOAppDefault {
  def run = Console.printLine("done").exitCode
}

Kommandozeilenargumente

Greifen Sie über ZIOApp.args oder getArgs mit ZIOAppArgs auf Programmargumente zu. Zurückgegeben wird ein Chunk[String].

import zio._

object App extends ZIOAppDefault {
  def run = for {
    args <- getArgs
    _    <- Console.printLine(s"args: ${args.mkString(", ")}")
  } yield ()
}

Fehler am Rand behandeln

Es ist empfehlenswert, Fehler auf der obersten Ebene zu behandeln oder zu protokollieren, damit die Laufzeitumgebung eine verständliche Meldung ausgibt. Verwenden Sie catchAll oder tapError in run.

import zio._

object App extends ZIOAppDefault {
  val logic = ZIO.fail("oops")
  def run = logic.catchAll(e => Console.printLine(s"Failed: $e"))
}

Fasern starten

Innerhalb von run können Sie Effekte mit fork zur nebenläufigen Ausführung auf Fasern starten und später mit join auf sie warten. Die Laufzeitumgebung überwacht alle Fasern und unterbricht sie beim Beenden.

import zio._

val prog = for {
  fiber  <- ZIO.succeed(40).fork
  result <- fiber.join
  _      <- Console.printLine(s"got $result")
} yield ()

Manuelle unsichere Ausführung

Außerhalb von ZIOAppDefault können Sie einen Effekt mit Unsafe.unsafe und einer Runtime ausführen. Dies ist jedoch Integrationsgrenzen vorbehalten und nicht für gewöhnlichen Anwendungscode gedacht.

import zio._

// Unsafe.unsafe { implicit u =>
//   Runtime.default.unsafe.run(myEffect).getOrThrow()
// }

Einfaches Scala-main

Zum Vergleich ein eigenständiger Scala-Einstiegspunkt. ZIOAppDefault übernimmt die Rolle von main, bindet aber zusätzlich Dienste, Fehlerberichte und die Überwachung von Fasern ein.

object Main {
  def main(args: Array[String]): Unit = {
    println("Hello, ZIO!")
  }
}

Kurze Überprüfung

Wie wird eine ZIO-Anwendung empfohlen ausgeführt?

Zusammenfassung

Sie haben gelernt, ZIO-Anwendungen auszuführen:

  • ZIOAppDefault mit einem run-Effekt
  • Standarddienste und provide für Layer
  • Exit-Codes, Argumente und Fehlerbehandlung auf oberster Ebene
  • Fasern starten und unsichere Grenzen

Sie haben den Kurs „ZIO Fundamentals“ abgeschlossen.

Kostenlos starten

Lerne Scala mit einem KI-Tutor — kostenlos

Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.

Kurse
39
Lektionen
143

Häufig gestellte Fragen

Ist die Lektion „ZIO-Apps ausführen“ kostenlos?

Ja — der vollständige Text von „ZIO-Apps ausführen“ 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-Apps ausführen“?

ZIOAppDefault 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 4 von 4.

Wie lange dauert die Lektion „ZIO-Apps ausführen“?

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