Trilhas
/
Gleam
Gleam
/
Programa
/
Tipos opacos
Ti

Tipos opacos em Gleam

4 exercícios

Sobre Tipos opacos

Tipos opacos em Gleam são tipos personalizados em que apenas o módulo que define o tipo pode construir valores desse tipo ou fazer correspondência de padrões com eles. Isso é útil para criar tipos que só devem ser usados de uma maneira específica.

Os tipos opacos são definidos com a palavra-chave opaque.

pub opaque type PositiveInt {
  PositiveInt(inner: Int)
}

Esse tipo PositiveInt deve ser usado em situações em que se quer um Int, mas o valor precisa ser zero ou maior. Um Int comum do Gleam não poderia ser usado, já que também pode ser negativo.

O módulo que define esse tipo pode definir uma função para obter o valor inteiro interno e uma função para criar o tipo PositiveInt, que retornará um erro se o valor não for positivo.

pub fn from_int(i: Int) -> Result(PositiveInt, String) {
  case i {
    _ if i < 0 -> Error("Value must be positive")
    _ -> Ok(PositiveInt(i))
  }
}

pub fn to_int(i: PositiveInt) -> Int {
  i.inner
}

Com essa API, outros módulos não conseguem construir um PositiveInt com um valor negativo, então qualquer função que receba um PositiveInt pode ter certeza de que o valor é positivo.

Editar via GitHub O link abre em uma nova janela ou aba

Aprenda Tipos opacos

A prática está bloqueada

Desbloqueie mais 1 exercício para praticar Tipos opacos