这是我写的一个使用if-else分支和保护表达式的例子.什么时候比另一个更合适?我想知道这一点的主要原因是因为语言通常具有惯用的做事方式.
test1 a b =
if mod b 3 ? 0 then a + b
else if mod b 5 ? 0 then a + b
else a
test2 a b
| mod b 3 ? 0 = a + b
| mod b 5 ? 0 = a + b
| otherwise = a
Run Code Online (Sandbox Code Playgroud)
Chu*_*uck 11
你给出的例子非常好地展示了警卫如何变得更好.
使用警卫,您可以获得一个非常简单易读的条件和结果列表 - 非常接近数学家如何编写函数.
用if,而另一方面,则有一个稍微复杂的(基本上为O(n 2)读取困难)嵌套表达式与以不规则的间隔在抛出关键字结构.
对于简单的情况,它基本上是一个if和守卫之间的折腾 - if在一些非常简单的情况下甚至可能更具可读性,因为它更容易在一行上写.但是,对于更复杂的逻辑,守卫是表达相同想法的更好方法.
| 归档时间: |
|
| 查看次数: |
457 次 |
| 最近记录: |