在 Elm 中嵌套两个 case 语句时,是否可以避免重复代码?
Can I avoid repeated code when nesting two case statements in Elm?
我正在将 Maybe String
转换为 Date
。为了便于阅读,我将别名 Date
键入 Birthdate
。
birthdate_from_url : Url.Url -> Birthdate
birthdate_from_url url =
case url.query of
Just query ->
case Date.fromIsoString query of
Ok birthdate ->
birthdate
Err _ ->
defaultBirthdate
Nothing ->
defaultBirthdate
对于这个嵌套案例,我不得不为每个可能的“失败”调用 defaultBirthdate
两次。
是否有使用或不使用 case
的替代方法?
您可以使用 Maybe.map
:
birthdate_from_url : Url.Url -> Birthdate
birthdate_from_url url =
case url.query |> Maybe.map Date.fromIsoString of
Just (Ok birthdate) ->
birthdate
_ ->
defaultBirthdate
我正在将 Maybe String
转换为 Date
。为了便于阅读,我将别名 Date
键入 Birthdate
。
birthdate_from_url : Url.Url -> Birthdate
birthdate_from_url url =
case url.query of
Just query ->
case Date.fromIsoString query of
Ok birthdate ->
birthdate
Err _ ->
defaultBirthdate
Nothing ->
defaultBirthdate
对于这个嵌套案例,我不得不为每个可能的“失败”调用 defaultBirthdate
两次。
是否有使用或不使用 case
的替代方法?
您可以使用 Maybe.map
:
birthdate_from_url : Url.Url -> Birthdate
birthdate_from_url url =
case url.query |> Maybe.map Date.fromIsoString of
Just (Ok birthdate) ->
birthdate
_ ->
defaultBirthdate