Scala for Backend Engineering & Functional Programming · Aula

Executando aplicações ZIO

ZIOAppDefault.

Aula 4 de 413 etapas

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:

  • ZIOAppDefault com um efeito run
  • serviços padrão e provide de 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.

Grátis para começar

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

  1. O efeito ZIO
  2. Compondo ZIO
  3. Canais de erros e dependências
  4. Executando aplicações ZIO
← Voltar para Scala for Backend Engineering & Functional Programming