O efeito ZIO
ZIO[R,E,A].
O efeito ZIO é uma aula grátis de Scala for Backend Engineering & Functional Programming no CoddyKit. Esta é a aula 1 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.
O que é ZIO?
ZIO é uma biblioteca para efeitos funcionais assíncronos, concorrentes e seguros quanto a recursos. O tipo central é ZIO[R, E, A] — uma descrição de um fluxo de trabalho que, dado um ambiente R, pode falhar com E ou ter sucesso com A.
Os três parâmetros de tipo
Leia ZIO[R, E, A] como uma função R => Either[E, A] (de forma assíncrona e com efeitos):
R— ambiente ou dependências necessáriasE— tipo da falha, caso ocorraA— tipo do valor, caso haja sucesso
Apelidos de tipos
ZIO fornece apelidos práticos:
UIO[A]=ZIO[Any, Nothing, A]— não pode falharTask[A]=ZIO[Any, Throwable, A]IO[E, A]=ZIO[Any, E, A]RIO[R, A]=ZIO[R, Throwable, A]
Criando efeitos bem-sucedidos
ZIO.succeed eleva um valor puro. O efeito não pode falhar, portanto seu tipo de falha é Nothing.
import zio._
val meaning: UIO[Int] = ZIO.succeed(42)Criando falhas
ZIO.fail cria um efeito com falha e uma falha tipada. O tipo de sucesso é Nothing, pois ele nunca tem sucesso.
import zio._
val failed: IO[String, Nothing] = ZIO.fail("Something went wrong")Envolvendo efeitos colaterais
ZIO.attempt envolve um bloco que produz efeitos colaterais e pode lançar uma exceção; o tipo de falha se torna Throwable (um Task).
import zio._
val parsed: Task[Int] = ZIO.attempt("123".toInt)Imprimindo no console
O serviço Console do ZIO fornece impressão com efeitos. Console.printLine retorna um ZIO cujo tipo de falha é IOException.
import zio._
val hello = Console.printLine("Hello, ZIO!")map
map transforma o valor de sucesso, mantendo inalterados os canais de falha e de ambiente.
import zio._
val doubled: UIO[Int] = ZIO.succeed(21).map(_ * 2)mapError
mapError transforma o canal de falha — útil para converter falhas de baixo nível em falhas específicas do domínio.
import zio._
val e: IO[String, Int] =
ZIO.fail(404).mapError(code => s"HTTP $code")Preguiça e pureza
Assim como o IO do Cats Effect, um valor ZIO é uma descrição pura e preguiçosa. Construí-lo não executa efeitos; isso só acontece quando ele é executado no ambiente de execução do ZIO.
Referência de Scala simples
Para fins de contraste, este é um programa Scala imediato e autocontido. O ZIO adiaria a execução e rastrearia as falhas no tipo, mas a saída seria a mesma.
object Main {
def main(args: Array[String]): Unit = {
val x = 42
println(s"value: $x")
}
}Verificação rápida
Em ZIO[R, E, A], o que representa o parâmetro E?
Recapitulação
Você aprendeu o tipo de efeito ZIO:
ZIO[R, E, A]— ambiente, falha e sucesso- Apelidos
UIO,Task,IO,RIO succeed,fail,attemptmapemapError
A seguir: composição de efeitos ZIO.
Perguntas Frequentes
A aula “O efeito ZIO” é grátis?
Sim — o texto completo de “O efeito 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 “O efeito ZIO”?
ZIO[R,E,A]. 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 1 de 4.
Quanto tempo leva a aula “O efeito 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.