在 Elm 中编码可选字符串

Tör*_*bor 5 encode elm

我想编码Maybe Stringstring它是否有一个具体的数值,或者null如果它是Nothing

目前,我使用辅助函数encodeOptionalString myStr来获得所需的效果。我想知道是否有更像 Elm 的方式来做到这一点。我真的很喜欢elm-json-decode-pipeline的 API,它允许我编写Decode.nullable Decode.string解码。

encodeOptionalString : Maybe String -> Encode.Value
encodeOptionalString s =
    case s of
        Just s_ ->
            Encode.string s_

        Nothing ->
            Encode.null
Run Code Online (Sandbox Code Playgroud)

gle*_*nsl 7

您可以encodeNullable自己将其概括为一个函数:

encodeNullable : (value -> Encode.Value) -> Maybe value -> Encode.Value
encodeNullable valueEncoder maybeValue =
    case maybeValue of
        Just value ->
            valueEncoder value

        Nothing ->
            Encode.null
Run Code Online (Sandbox Code Playgroud)

或者,如果您想要一个稍短的临时表达式:

maybeString
|> Maybe.map Encode.string
|> Maybe.withDefault Encode.null
Run Code Online (Sandbox Code Playgroud)