En programación funcional , un tipo de resultado es un tipo Monadic que contiene un valor devuelto o un código de error. Proporcionan una forma elegante de manejar los errores, sin recurrir al manejo de excepciones; cuando una función que puede fallar devuelve un tipo de resultado, el programador se ve obligado a considerar las rutas de éxito o falla, antes de obtener acceso al resultado esperado; esto elimina la posibilidad de una suposición errónea del programador.
Ejemplos de
- En Elm , la biblioteca estándar lo define como . [1]
type Result e v = Ok v | Err e
- En Haskell , por convención, el
Either
tipo se usa para este propósito, que la biblioteca estándar define como . [2]data Either a b = Left a | Right b
- En OCaml , la biblioteca estándar lo define como . [3]
type ('a, 'b) result = Ok of 'a | Error of 'b type
- En Rust , la biblioteca estándar lo define como }. [4]
enum Result<T, E> { Ok(T), Err(E)
- En Scala , la biblioteca estándar también define un
Either
tipo, [5] sin embargo, Scala también tiene un manejo de excepciones más convencional . - En Swift , la biblioteca estándar lo define como . [6]
@frozen enum Result<Success, Failure> where Failure : Error
Oxido
El objeto de resultado tiene los métodos is_ok()
y is_err()
.
const CAT_FOUND : bool = verdadero ; fn main () { deja resultado = pet_cat (); si el resultado . is_ok () { println! ( "¡Genial, podríamos acariciar al gato!" ); } más { println! ( "¡Oh, no, no podríamos acariciar al gato!" ); }}fn pet_cat () -> Resultado < (), Cadena > { si CAT_FOUND { Ok (()) } más { Err ( String :: from ( "el gato no se encuentra por ninguna parte" )) }}
Ver también
Referencias
- ^ "Resultado · Una introducción a Elm" . guide.elm-lang.org .
- ^ "Datos . Cualquiera" . hackage.haskell.org .
- ^ "Manejo de errores - OCaml" . ocaml.org .
- ^ "std :: resultado - Óxido" . doc.rust-lang.org .
- ^ "Biblioteca estándar de Scala 2.13.3 - scala.util.Either" . www.scala-lang.org . Consultado el 9 de octubre de 2020 .
- ^ "Documentación para desarrolladores de Apple" . developer.apple.com .