Я играю с примерами Elm, и я заметил, что пример field дает Result
. После того, как застрял, я придумал этот упрощенный случай:Как отобразить результаты OK
import Html exposing (text)
import String
f: Int -> Int
f x = x + 1
g: Result String Int -> Result String Int
g x = (Result.map f) x
main =
text ( toString (g (String.toInt 5)))
В результате отображает OK 6
, и я предпочел бы это показывать только 6
- Я знаю, что toString
принимает любой тип и возвращает строку representaton из Это. Так что, может быть, я могу изменить toString
- если результат
OK
то я могу напечатать численный результат - если результат
Err
то я хотел бы сделать некоторые персонализированное сообщение об ошибке
Возможно, это причина для andThen
, так как операция + 1
может завершиться с ошибкой.
andThen : Result e a -> (a -> Result e b) -> Result e b
andThen result callback =
case result of
Ok value -> callback value
Err msg -> Err msg
Определение andThen
это именно то, что он делает ... и является экземпляром case
.
Либо с andThen
, либо просто старым case
как исправить мой пример? Даже если я исправлю это самостоятельно, это может быть не самое вялое решение с хорошей обработкой ошибок. Поэтому я отправляю вопрос.