Haskell代码中的|操作符是什么含义?是模式匹配还是构造器?
Haskell代码中
|符号的作用 你给出的是Haskell语言的函数代码,其中的|是**卫语句(Guard Clause)**的语法标记,和构造器(Constructor)没有关系,它的作用就是按顺序匹配条件、执行对应逻辑。
具体规则
- 每一个
|后面跟着一个布尔类型的判断条件,所有卫语句会从上到下依次判断 - 第一个结果为
True的条件,对应的=后面的表达式会被作为函数的计算结果返回 - 示例中最后一个条件里的
otherwise是Haskell内置常量,值恒为True,用来处理所有前置条件都不满足的兜底场景
对应示例代码的逻辑说明
这个函数是用来计算到2021年11月10日为止的周岁年龄,三个卫语句分别对应三类场景:
- 若出生月份小于11月:直接用
2021 - 出生年份得到年龄 - 若出生月份等于11月且出生日期小于等于10号:同样直接用
2021 - 出生年份得到年龄 - 其他情况(出生月份大于11月,或者11月出生但日期晚于10号):需要在年份差值基础上减1,得到实际周岁
补充说明
卫语句本质是多分支if-else的语法糖,在多条件判断的场景下,比层层嵌套的if-else写法可读性更高,是Haskell中非常常用的分支语法。
内容的提问来源于stack exchange,提问作者SourceCodeEngineer
相关产品推荐
相关产品推荐

