作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对 haskell 还很陌生,但是如果你做了一个 if 语句:
function a b c
| (a+b == 0) = True
| --etc.
| otherwise = False
第二个 if 语句与其他语言中的 else if 相同,还是只是另一个 if。我认为是前者,因为你只能有一个输出,但我只是想确定一下。
最佳答案
您使用的构造称为守卫。 Haskell 逐个检查给定的替代方案,直到一个条件产生True
。然后它计算该方程的右侧。
你写得很好
function n
| n == 1 = ...
| n == 2 = ...
| n >= 3 = ...
因此,守卫类型代表来自其他语言的 if/elseif 构造。由于 otherwise
被简单地定义为 True
,最后一个
| otherwise =
将始终为 true,因此代表一个包罗万象的 else
子句。
尽管如此,Haskell 有一个常见的 a = if foo then 23 else 42
语句。
关于Haskell IF 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4916108/
我是一名优秀的程序员,十分优秀!