Uruchamianie aplikacji ZIO
ZIOAppDefault
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:
ZIOAppDefaultz efektemrun- usługi domyślne i
providewarstw - 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.
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
- Efekt ZIO
- Komponowanie ZIO
- Kanały błędów i zależności
- Uruchamianie aplikacji ZIO