gpt4 book ai didi

f# - 当某物不属于特定类型时如何进行模式匹配

转载 作者:行者123 更新时间:2023-12-02 09:03:58 25 4
gpt4 key购买 nike

我们都习惯于在某些特定类型的情况下进行模式匹配,例如,

match x with
| Y(x) :: tail -> ... // assumes List.head(x) is of type Y(x)

但是当某些东西属于特定类型时,我如何才能匹配大小写呢?例如,

match x with
| Not Y(_) :: tail -> ... // List.head(x) is definitely not a Y

谢谢!

最佳答案

虽然没有直接支持Not,但您可以使用 partial active pattern .

type Color = | Red | Green | Blue

let (|NotRed|_|) = function
| Red -> None
| color -> Some color

let rec print = function
| (NotRed head) :: tail ->
printfn "%A is Not Red" head
print tail
| _ :: tail -> print tail
| _ -> ()

print [Red; Green; Blue]

输出

Green is Not Red
Blue is Not Red

关于f# - 当某物不属于特定类型时如何进行模式匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5079777/

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