Executando aplicações ZIO
ZIOAppDefault.
Executando aplicações ZIO é uma aula grátis de Scala for Backend Engineering & Functional Programming no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Scala for Backend Engineering & Functional Programming, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Scala for Backend Engineering & Functional Programming inclui 4 aulas no total.
Da descrição à execução
Um valor ZIO é apenas um plano. Para executá-lo, você o entrega ao ambiente de execução do ZIO, geralmente estendendo ZIOAppDefault em vez de chamar o ambiente manualmente.
ZIOAppDefault
Estenda ZIOAppDefault e implemente run. A estrutura fornece serviços padrão (Console, Clock, Random, System) e gerencia a inicialização e o encerramento.
import zio._
object Hello extends ZIOAppDefault {
def run = Console.printLine("Hello, ZIO!")
}O valor run
run é um ZIO cujo ambiente é satisfeito pelos serviços padrão. Seus tipos de erro e sucesso são flexíveis; o ambiente de execução informa as falhas e define o código de saída.
Uma aplicação com várias etapas
Componha a lógica da aplicação com uma compreensão for. Cada linha é um efeito executado em sequência pelo ambiente de execução.
import zio._
object Greeter extends ZIOAppDefault {
def run = for {
_ <- Console.printLine("What is your name?")
name <- Console.readLine
_ <- Console.printLine(s"Hello, $name!")
} yield ()
}Fornecendo camadas em run
Se a sua aplicação depender de serviços personalizados, forneça as respectivas camadas com provide no efeito run, para que o ambiente seja totalmente satisfeito antes da execução.
import zio._
object App extends ZIOAppDefault {
// def run = program.provide(MyService.layer)
def run = ZIO.unit
}Códigos de saída
Por padrão, um run bem-sucedido termina com o código 0, e uma falha termina com um código diferente de zero. Você também pode retornar um ExitCode explícito usando exitCode.
import zio._
object App extends ZIOAppDefault {
def run = Console.printLine("done").exitCode
}Argumentos da linha de comando
Acesse os argumentos do programa com ZIOAppArgs por meio de ZIOApp.args ou getArgs, retornando um Chunk[String].
import zio._
object App extends ZIOAppDefault {
def run = for {
args <- getArgs
_ <- Console.printLine(s"args: ${args.mkString(", ")}")
} yield ()
}Tratando falhas na camada externa
É uma boa prática tratar ou registrar os erros no nível superior, para que o ambiente de execução imprima uma mensagem clara. Use catchAll ou tapError em run.
import zio._
object App extends ZIOAppDefault {
val logic = ZIO.fail("oops")
def run = logic.catchAll(e => Console.printLine(s"Failed: $e"))
}Criando fibras
Dentro de run, você pode usar fork para executar efeitos em fibras, obtendo a junção delas posteriormente com join. O ambiente de execução supervisiona todas as fibras e as interrompe durante o encerramento.
import zio._
val prog = for {
fiber <- ZIO.succeed(40).fork
result <- fiber.join
_ <- Console.printLine(s"got $result")
} yield ()Execução manual insegura
Fora de ZIOAppDefault, você pode executar um efeito com Unsafe.unsafe e um Runtime, mas isso é reservado para limites de integração, não para o código normal da aplicação.
import zio._
// Unsafe.unsafe { implicit u =>
// Runtime.default.unsafe.run(myEffect).getOrThrow()
// }main em Scala simples
Para comparação, um ponto de entrada Scala autocontido. ZIOAppDefault desempenha o papel de main, mas também conecta serviços, relatórios de erros e supervisão de fibras.
object Main {
def main(args: Array[String]): Unit = {
println("Hello, ZIO!")
}
}Verificação rápida
Qual é a maneira recomendada de executar uma aplicação ZIO?
Recapitulação
Você aprendeu a executar aplicações ZIO:
ZIOAppDefaultcom um efeitorun- serviços padrão e
providede camadas - códigos de saída, argumentos e tratamento de erros no nível superior
- criação de fibras e limites inseguros
Você concluiu o curso Fundamentos de ZIO.
Aprenda Scala com um tutor de IA — grátis
Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.
- Cursos
- 39
- Aulas
- 143
Perguntas Frequentes
A aula “Executando aplicações ZIO” é grátis?
Sim — o texto completo de “Executando aplicações ZIO” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Scala for Backend Engineering & Functional Programming, atualize para CoddyKit PRO. O curso de Scala for Backend Engineering & Functional Programming inclui 4 aulas no total.
O que vou aprender em “Executando aplicações ZIO”?
ZIOAppDefault. Você pratica Scala for Backend Engineering & Functional Programming com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Scala for Backend Engineering & Functional Programming?
Nenhuma experiência prévia é necessária. Scala for Backend Engineering & Functional Programming no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.
Quanto tempo leva a aula “Executando aplicações ZIO”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Scala for Backend Engineering & Functional Programming?
Sim. Cada aula de Scala for Backend Engineering & Functional Programming inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- O efeito ZIO
- Compondo ZIO
- Canais de erros e dependências
- Executando aplicações ZIO