[英]haskell function / pattern operator
我的一个朋友向我展示了以下代码:
calculateAge :: (Int, Int, Int) -> Int
calculateAge (d2, m2, y2)
| 11 > m2 = 2021 - y2
| 11 == m2 && 10 >= d2 = 2021 - y2
| otherwise = 2021 - y2 - 1
是什么| 运营商代表什么? 是不是只要模式匹配,其余的就会被执行? 或者它像一个构造函数?
|
不是运营商。 这是一个守卫[wiki] 。 |
后面的表达式是一个布尔表达式。 如果它的计算结果为True
,那么它将“触发”与其关联的表达式。
这意味着如果模式匹配,守卫将被从上到下评估,并且对于评估为True
的第一个守卫,它将触发相应的表达式。 otherwise
只是True
的别名,所以otherwise
将始终评估为True
。 这意味着,如果没有上市前后卫otherwise
防范火灾,与条款otherwise
将闪光。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.