Hor*_*mke 2 f# functional-programming
我有一些复杂的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
Run Code Online (Sandbox Code Playgroud)
有更好的功能解决方案吗?我想到了类似的东西
match a with
| b -> ...
| _ -> ...
Run Code Online (Sandbox Code Playgroud)
但是,这当然不起作用,因为b成为该陈述中的一个.
关于if..then..else表达没有什么"不起作用" ; 甚至Haskell也有;)
然而,正如John Palmer的回答所示,你可以写作
match a with
| foo when foo <> b -> a - 1
| foo when test foo -> a + 1
| _ -> a
Run Code Online (Sandbox Code Playgroud)
你也可以写
if a <> b then a - 1
elif test a then a + 1
else a
Run Code Online (Sandbox Code Playgroud)
就个人而言,在这种情况下,我更喜欢if..then..else语法,因为它略短,(IMO)更简洁.
| 归档时间: |
|
| 查看次数: |
71 次 |
| 最近记录: |