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