什么时候守卫表情适当?
这是我写的一个使用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
你给的例子是警卫如何更好的一个很好的示范。
有了警卫,你有一个非常简单和可读的条件和结果列表 - 非常接近数学家如何写这个函数。
随着if
,在另一方面,你有一个比较复杂的(基本上是O(n2)的读取困难)嵌套表达式与不定期抛出的关键字结构。
对于简单的情况,它基本上是if
和guard之间的折腾 - if
在一些非常简单的情况下甚至可以更易读,因为在单行上写更容易。 然而,对于更复杂的逻辑来说,警卫是表达同样想法的更好方式。
我一直认为这是一个偏好问题。 就我个人而言,我更喜欢第二个,我认为if-elses比守卫更有必要的感觉,我发现守卫更容易阅读。
链接地址: http://www.djcxy.com/p/43257.html