我有一些复杂的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成为该陈述中的一个.
关于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)更简洁.