繁体   English   中英

haskell 函数/模式运算符

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM