Scala for Backend Engineering & Functional Programming · Lekcja

Uruchamianie aplikacji ZIO

ZIOAppDefault

Lekcja 4 z 413 kroki

Uruchamianie aplikacji ZIO to bezpłatna lekcja Scala for Backend Engineering & Functional Programming na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Scala for Backend Engineering & Functional Programming, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Scala for Backend Engineering & Functional Programming zawiera 4 lekcji w sumie.

Od opisu do wykonania

Wartość ZIO jest tylko planem działania. Aby ją wykonać, należy przekazać ją do środowiska wykonawczego ZIO — zwykle przez rozszerzenie ZIOAppDefault, zamiast ręcznego wywoływania środowiska wykonawczego.

ZIOAppDefault

Rozszerz ZIOAppDefault i zaimplementuj run. Framework udostępnia domyślne usługi (Console, Clock, Random, System) oraz zarządza uruchamianiem i zamykaniem aplikacji.

import zio._

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

Wartość run

run jest wartością ZIO, której środowisko jest zapewniane przez usługi domyślne. Typy błędu i sukcesu są elastyczne; środowisko wykonawcze zgłasza niepowodzenia i ustawia kod zakończenia.

Aplikacja wieloetapowa

Połącz logikę aplikacji za pomocą wyrażenia for. Każdy wiersz jest efektem wykonywanym sekwencyjnie przez środowisko wykonawcze.

import zio._

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

Dostarczanie warstw w run

Jeśli aplikacja zależy od niestandardowych usług, dostarcz ich warstwy za pomocą provide na efekcie run, aby środowisko było w pełni zaspokojone przed wykonaniem.

import zio._

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

Kody zakończenia

Domyślnie pomyślne run kończy się kodem 0, a niepowodzenie — kodem różnym od zera. Możesz także zwrócić jawny ExitCode za pomocą exitCode.

import zio._

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

Argumenty wiersza poleceń

Uzyskaj dostęp do argumentów programu za pomocą ZIOAppArgs przez ZIOApp.args lub getArgs, które zwracają Chunk[String].

import zio._

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

Obsługa niepowodzeń na granicy aplikacji

Dobrym zwyczajem jest obsługiwanie błędów lub rejestrowanie ich na najwyższym poziomie, aby środowisko wykonawcze wyświetlało czytelny komunikat. W run użyj catchAll lub tapError.

import zio._

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

Rozwidlanie włókien

Wewnątrz run możesz użyć fork, aby uruchamiać efekty na włóknach współbieżnie, a później połączyć je za pomocą join. Środowisko wykonawcze nadzoruje wszystkie włókna i przerywa je podczas zamykania aplikacji.

import zio._

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

Ręczne niebezpieczne uruchamianie

Poza ZIOAppDefault możesz uruchomić efekt za pomocą Unsafe.unsafe i Runtime, ale jest to rozwiązanie przeznaczone dla granic integracji, a nie zwykłego kodu aplikacji.

import zio._

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

Zwykły main w Scali

Dla porównania — samodzielny punkt wejścia w Scali. ZIOAppDefault pełni rolę main, ale dodatkowo konfiguruje usługi, raportowanie błędów i nadzorowanie włókien.

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

Szybkie sprawdzenie

Jaki jest zalecany sposób uruchamiania aplikacji ZIO?

Podsumowanie

Nauczyłeś się uruchamiać aplikacje ZIO:

  • ZIOAppDefault z efektem run
  • usługi domyślne i provide warstw
  • kody zakończenia, argumenty i obsługa błędów na najwyższym poziomie
  • rozwidlanie włókien i niebezpieczne granice

Ukończyłeś kurs ZIO Fundamentals.

Bezpłatny start

Ucz się Scala dzięki korepetycjom AI — za darmo

Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.

Kursy
39
Lekcje
143

Często zadawane pytania

Czy lekcja „Uruchamianie aplikacji ZIO” jest bezpłatna?

Tak — pełny tekst „Uruchamianie aplikacji ZIO” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Scala for Backend Engineering & Functional Programming, przejdź na CoddyKit PRO. Kurs Scala for Backend Engineering & Functional Programming zawiera 4 lekcji w sumie.

Co nauczysz się w „Uruchamianie aplikacji ZIO”?

ZIOAppDefault Ćwiczysz Scala for Backend Engineering & Functional Programming z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Scala for Backend Engineering & Functional Programming?

Nie wymagamy żadnego doświadczenia. Scala for Backend Engineering & Functional Programming w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.

Ile czasu zajmuje lekcja „Uruchamianie aplikacji ZIO”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Scala for Backend Engineering & Functional Programming?

Tak. Każda lekcja Scala for Backend Engineering & Functional Programming zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Efekt ZIO
  2. Komponowanie ZIO
  3. Kanały błędów i zależności
  4. Uruchamianie aplikacji ZIO
← Powrót do Scala for Backend Engineering & Functional Programming