Parcours
/
Gleam
Gleam
/
Programme
/
Types opaques
Ty

Types opaques en Gleam

4 exercices

À propos de Types opaques

En Gleam, un type opaque est un type personnalisé dont seul le module qui le définit peut construire les valeurs, ou faire du filtrage par motif dessus. C'est utile pour créer des types qui ne doivent être utilisés que d'une manière bien précise.

Les types opaques se définissent à l'aide du mot-clé opaque.

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

Ce type PositiveInt est fait pour les situations où l'on veut un entier, à condition qu'il soit supérieur ou égal à zéro. Un Int Gleam ordinaire ne conviendrait pas, car il peut aussi être négatif.

Le module qui définit ce type peut définir une fonction pour obtenir la valeur entière interne, et une fonction pour créer le type PositiveInt, qui renverra une erreur si la valeur n'est pas positive.

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
}

Avec cette API, les autres modules ne peuvent pas construire de PositiveInt avec une valeur négative ; toute fonction qui prend un PositiveInt peut donc être sûre que la valeur est positive.

Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet

Apprends Types opaques

L'entraînement est verrouillé

Déverrouille 1 exercice de plus pour t'entraîner sur Types opaques