Tracks
/
Gleam
Gleam
/
Temario
/
Tipos opacos
Ti

Tipos opacos en Gleam

4 ejercicios

Acerca de Tipos opacos

Los tipos opacos de Gleam son tipos personalizados en los que solo el módulo que define el tipo puede construir valores del tipo o aplicarles coincidencia de patrones. Esto resulta útil para crear tipos que solo deberían usarse de una forma concreta.

Los tipos opacos se definen con la palabra clave opaque.

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

Este tipo PositiveInt está pensado para usarse en situaciones en las que se quiere un número entero, pero este tiene que ser cero o mayor. No se podría usar un Int normal de Gleam, ya que estos también pueden ser negativos.

El módulo que define este tipo puede definir una función para obtener el valor entero interno y una función para crear el tipo PositiveInt, que devolverá un error si el valor no es 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
}

Con esta API, otros módulos no pueden construir un PositiveInt con un valor negativo, así que cualquier función que reciba un PositiveInt puede tener la seguridad de que el valor es positivo.

Editar en GitHub El enlace se abre en una nueva ventana o pestaña

Aprende Tipos opacos

La práctica está bloqueada

Desbloquea 1 ejercicio más para practicar Tipos opacos