守卫语句

在case of中使用守卫语句

1
2
3
4
checkConditions :: Int -> String
checkConditions x = case x of
n | n > 5 && even n -> "Greater than 5 and even"
_ -> "Other cases"

n | n > 5 && even n定义一个n,且n大于5且n为偶数

1
2
3
4
let payStatusCondition = 
case payStatus of
Just ps | Just psInt <- readMaybe ps -> [ChargeLogPayStatus ==. psInt]
_ -> []

为何使用|而不是用&&是因为 && 是一个逻辑运算符,它用于连接两个布尔表达式并返回一个布尔值,而守卫 | 后的条件可以包含模式匹配