В функциональном программировании, A типа результата является Монадическим типом проведения возвращаемого значения или кода ошибки. Они предоставляют элегантный способ обработки ошибок, не прибегая к обработке исключений; когда функция, которая может дать сбой, возвращает тип результата, программист вынужден учитывать пути успеха или отказа, прежде чем получить доступ к ожидаемому результату; это исключает возможность ошибочного предположения программиста.
type Result e v = Ok v | Err e
Either
для этой цели по соглашению используется тип, который в стандартной библиотеке определяется как. data Either a b = Left a | Right b
type ('a, 'b) result = Ok of 'a | Error of 'b type
enum Resultlt;T, Egt; { Ok(T), Err(E)
Either
тип, однако Scala также имеет более традиционную обработку исключений.@frozen enum Resultlt;Success, Failuregt; where Failure: Error
Объект результата имеет методы is_ok()
и is_err()
.
const CAT_FOUND: bool = true; fn main() { let result = pet_cat(); if result.is_ok() { println!("Great, we could pet the cat!"); } else { println!("Oh no, we couldn't pet the cat!"); } } fn pet_cat() -gt; Resultlt;(), Stringgt; { if CAT_FOUND { Ok(()) } else { Err(String::from("the cat is nowhere to be found")) } }