Jump to content

Тип результата

В функциональном программировании тип результата — это монадический тип, содержащий возвращаемое значение или код ошибки. Они предоставляют элегантный способ обработки ошибок, не прибегая к обработке исключений; когда функция, которая может дать сбой, возвращает тип результата, программист вынужден учитывать пути успеха или неудачи, прежде чем получить доступ к ожидаемому результату; это исключает возможность ошибочного предположения программиста.

  • В Elm он определяется стандартной библиотекой как type Result e v = Ok v | Err e. [1]
  • В Haskell по соглашению Either для этой цели используется тип, который определяется стандартной библиотекой как data Either a b = Left a | Right b, где a тип ошибки и b это возвращаемый тип. [2]
  • В Котлине он определяется стандартной библиотекой как value class Result<out T>. [3]
  • В OCaml он определяется стандартной библиотекой как type ('a, 'b) result = Ok of 'a | Error of 'b type. [4]
  • В Rust он определяется стандартной библиотекой как enum Result<T, E> { Ok(T), Err(E) }. [5] [6]
  • В Scala стандартная библиотека также определяет Either тип, [7] однако Scala также имеет более традиционную обработку исключений .
  • В Swift он определяется стандартной библиотекой как @frozen enum Result<Success, Failure> where Failure : Error. [8]
  • В C++ он определяется стандартной библиотекой как std::expected<T, E>. [9]
  • В Python он доступен из сторонних библиотек, таких как return и result .

Ржавчина

[ редактировать ]

Объект результата имеет методы 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() -> Result<(), String> {
    if CAT_FOUND {
        Ok(())
    } else {
        Err(String::from("the cat is nowhere to be found"))
    }
}

См. также

[ редактировать ]
  1. ^ «Результат · Введение в Elm» . guide.elm-lang.org . Архивировано из оригинала 9 октября 2023 года . Проверено 9 октября 2023 г.
  2. ^ «Данные.Либо» . hackage.haskell.org . 22 сентября 2023 года. Архивировано из оригинала 9 октября 2023 года . Проверено 9 октября 2023 г.
  3. ^ «Результат — язык программирования Kotlin» . kotlinlang.org . Архивировано из оригинала 9 октября 2023 года . Проверено 9 октября 2023 г.
  4. ^ «Обработка ошибок · Учебные пособия по OCaml» . ocaml.org . Архивировано из оригинала 9 октября 2023 года . Проверено 9 октября 2023 г.
  5. ^ "std::result - Rust" . doc.rust-lang.org . Архивировано из оригинала 9 октября 2023 года . Проверено 9 октября 2023 г.
  6. ^ «stdlib: Добавить модуль результатов · ржавчина-lang/rust@c1092fb» . github.com . 29 октября 2011 г. Архивировано из оригинала 9 октября 2023 г. . Проверено 9 октября 2023 г.
  7. ^ «Стандартная библиотека Scala 2.13.12 — scala.util.Either» . www.scala-lang.org . Архивировано из оригинала 9 октября 2023 года . Проверено 9 октября 2023 г.
  8. ^ «Результат | Документация разработчика Apple» . разработчик.apple.com . Архивировано из оригинала 9 октября 2023 года . Проверено 9 октября 2023 г.
  9. ^ «std::expected — cppreference.com» . ru.cppreference.com . 25 августа 2023 года. Архивировано из оригинала 9 октября 2023 года . Проверено 9 октября 2023 г.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 9f65efe89f5fe6ec4086ef8cce4d626e__1714131660
URL1:https://arc.ask3.ru/arc/aa/9f/6e/9f65efe89f5fe6ec4086ef8cce4d626e.html
Заголовок, (Title) документа по адресу, URL1:
Result type - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)