我有一些复杂的if语句,它的可读性不是很好。它的工作方式类似于以下示例:
let a = 1
let b = 2
let test v = true
if a <> b then a - 1
else
if (test a) then a + 1
else a
有更好的功能解决方案吗?我想到了像
这样的东西match a with
| b -> ...
| _ -> ...
但当然,这不起作用,因为b成为该声明中的内容。
答案 0 :(得分:5)
没有什么&#39;无功能&#39;约if..then..else
个表达式;甚至Haskell也有;)
虽然正如John Palmer的回答所示,你可以写
match a with
| foo when foo <> b -> a - 1
| foo when test foo -> a + 1
| _ -> a
你也可以写
if a <> b then a - 1
elif test a then a + 1
else a
就个人而言,在这种情况下,我更喜欢if..then..else
语法,因为它略短,而且(IMO)更简洁。
答案 1 :(得分:3)
这是匹配的外观
match a with
|foo when foo=b -> ..
|foo when test foo -> ...
|_ -> a
您需要使用when