map : Result<T, E> -> Result<U, E> avec f : T -> U
map_err : Result<T, E> -> Result<T, E2> avec f : E -> E2
and_then : Result<T, E> -> Result<U, E2> avec f : T -> Result<U, E2>
or_else : Result<T, E> -> Result<U, E2> avec f : E -> Result<U, E2>
...
Le principe est de te permettre, grâce à ce type et ses opérations, de composer des "computations" et d'en récupérer un type final cohérent que tu peux traiter correctement.
[^] # Re: Kamoulox !
Posté par David Delassus (site web personnel) . En réponse au journal Golang, oops you did it again. Évalué à 10.
L'avantage du type
Result<Data, Error>c'est les opérations que tu peux chaîner.Result<T, E> -> Result<U, E> -> Result<V, E> -> ...Tu peux donc découpler la gestion d'erreur de ton algorithme et ce sans avoir besoin d'exception et de "jump" dans le code.
Un exemple en Elixir avec ma lib rustic_result :
En gros :
map : Result<T, E> -> Result<U, E>avecf : T -> Umap_err : Result<T, E> -> Result<T, E2>avecf : E -> E2and_then : Result<T, E> -> Result<U, E2>avecf : T -> Result<U, E2>or_else : Result<T, E> -> Result<U, E2>avecf : E -> Result<U, E2>Le principe est de te permettre, grâce à ce type et ses opérations, de composer des "computations" et d'en récupérer un type final cohérent que tu peux traiter correctement.
https://link-society.com - https://kubirds.com - https://github.com/link-society/flowg