Haskell - guard

Haskell - guard

Haskell - guard

在Haskell中,guard是一种编程技巧,用于在满足某个条件时执行一段代码,否则跳过该代码块。guard通常用于控制流语句(如if、elif和else)中,用于在满足某个条件时执行相应的代码。
除了使用其他语言基本都会存在的控制流语句之外,还可以使用**|** 来进行条件分支的处理,可读性更高而且与模式匹配契合的非常好

1
2
3
4
5
6
7
8
9
10
11
12
13
scoreLevel :: Double -> String
scoreLevel score
| score < 60 = "Failed!"
| score < 70 = "Passed!"
| score < 80 = "Good!"
| score < 90 = "Excellent!"
| otherwise = "Perfect!"

main = do
print (scoreLevel 60)
print (scoreLevel 70)
print (scoreLevel 80)
print (scoreLevel 90)

这段代码定义了一个名为scoreLevel的函数,接受一个Double类型的参数score,并返回一个字符串。该函数根据score的值,返回不同的字符串。otherwise会捕获剩下的所有条件。
一个竖线就是一个布尔表达式,如果计算是True就会选择对应的函数进入,如果是False就会走下面的表达式。一句题外话, | 不像 switch..case一样,进入一个case后就会执行下面的case所有语句。

1
2
3
4
5
myCompare :: (Ord a) => a -> a -> Ordering
myCompare x y
| x > y = GT
| x == y = EQ
| otherwise = LT

Haskell - guard
http://cvrain.cloudvl.cn/2023/11/16/Haskell/haskell-guard/
作者
ClaudeRainer
发布于
2023年11月16日
许可协议