Elm 如何将条件添加到匹配中以防。。。属于

Elm 如何将条件添加到匹配中以防。。。属于,elm,Elm,在函数式语言中,可以向模式匹配的分支添加条件:例如,在OCaml中: let value=将某物与 |网心科技->“1” |另一个条件->“2” | _ -> "3" 在elm怎么做?我尝试了when和if,但没有任何效果。Elm在模式匹配中没有条件,可能是因为语言设计者倾向于保持语法小而简单 您所能做的最好的事情如下: let value = case something of OneThing -> "1

在函数式语言中,可以向模式匹配的分支添加条件:例如,在OCaml中:

let value=将某物与
|网心科技->“1”
|另一个条件->“2”
| _ -> "3"

在elm怎么做?我尝试了
when
if
,但没有任何效果。

Elm在模式匹配中没有条件,可能是因为语言设计者倾向于保持语法小而简单

您所能做的最好的事情如下:

let
    value =
        case something of
            OneThing ->
                "1"

            Another ->
                if condition then
                    "2"
                else
                    ...

            _ ->
                "3"
let
    value =
        case ( something, condition ) of
            ( OneThing, _ ) ->
                "1"

            ( Another, True ) ->
                "2"

            _ ->
                "3"

作为在
case
分支中使用
if
的替代方法,您可能希望与包含条件的元组进行匹配,如下所示:

let
    value =
        case something of
            OneThing ->
                "1"

            Another ->
                if condition then
                    "2"
                else
                    ...

            _ ->
                "3"
let
    value =
        case ( something, condition ) of
            ( OneThing, _ ) ->
                "1"

            ( Another, True ) ->
                "2"

            _ ->
                "3"

仅当分支中存在一个条件时,此解决方案才有效。如果你想要两个不同的条件,那就不可能了。@Boiethios,如果你引入了多个条件,它肯定会变得更复杂,我建议在这种情况下切换到
If
/
else
。然而,我不认为有两个不同的条件是不可能的,只要在匹配的元组中添加另一个元素就可以了。看,如果我想知道你的意思,请告诉我你是对的,我没有想过。但是,正如您所说,这种方法在添加条件时会很快使代码变得混乱。在我的学习项目中,我切换到
if
<代码>其他。elm团队的这一选择并没有使语言在IMO中保持“简单”,因为它会强制编写可读性较差的代码(例如:),也许我会在他们的存储库中发布这些内容。@b欢迎加入100k俱乐部!