在函数式语言中,可以向模式匹配的分支添加条件:例如,在OCaml中:
let value = match something with
| OneThing -> "1"
| Another when condition -> "2"
| _ -> "3"
如何在榆树中做到这一点?我尝试了when
和if
,但没有任何效果。
Elm 在模式匹配中没有条件,可能是因为语言设计者倾向于保持语法小而简单。
你能做的最好的事情就是这样:
let
value =
case something of
OneThing ->
"1"
Another ->
if condition then
"2"
else
...
_ ->
"3"
作为在
case
分支中使用 if
的替代方法,您可能希望改为与包含条件的元组匹配,如下所示:
let
value =
case ( something, condition ) of
( OneThing, _ ) ->
"1"
( Another, True ) ->
"2"
_ ->
"3"