print "hello" 5 --6ren">
gpt4 book ai didi

haskell - 案例表达式中的组匹配

转载 作者:行者123 更新时间:2023-12-03 15:03:16 24 4
gpt4 key购买 nike

我有一个变量

a = 3

对于 a 的某些值,我想调用相同的函数:
case a of
3 -> print "hello"
4 -> print "hello"
5 -> print "hello"
6 -> print "hello something else"

因此,对于 a=3、a=4 和 a=5,我进行了相同的函数调用。
我可以更好地分组吗?我有点在寻找一个解决方案,它是:
case a of
3 || 4 || 5 -> print "hello"
6 -> print "hello something else"

这当然行不通,但希望你能得到我想要的结果。

谢谢。

最佳答案

怎么样

case a of
_ | a == 3 || a == 4 || a == 5
-> print "hello"
6 -> print "hello something else"

写起来不那么乏味
case a of
_ | a `elem` [3, 4, 5]
-> print "hello"
6 -> print "hello something else"

或者
case a of
_ | 3 <= a && a <= 5
-> print "hello"
6 -> print "hello something else"

甚至,如果在您的实际程序中有很多可能的值供您匹配,则如下所示:
import qualified Data.Set as S

valuesToMatchAgainst :: S.Set Int
valuesToMatchAgainst = S.fromList [3, 4, 5]

-- ...

case a of
_ | a `S.elem` valuesToMatchAgainst
-> print "hello"
6 -> print "hello something else"

(我假设您已经了解 _ 是匹配任何值的通配符,并且 | introduces a guard 。)

关于haskell - 案例表达式中的组匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15173564/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com