gpt4 book ai didi

f# - 具有可区分联合的主动模式匹配

转载 作者:行者123 更新时间:2023-12-05 00:21:53 28 4
gpt4 key购买 nike

有没有办法将以下形式的可区分联合与事件模式匹配一​​起使用?我一直没能找到任何例子。

这就是我想要做的:

type c = a | b

type foo =
| bar1
| bar2 of c

//allowed
let (|MatchFoo1|_|) aString =
match aString with
| "abcd" -> Some bar1
| _ -> None

//not allowed
let (|MatchFoo2|_|) aString =
match aString with
| "abcd" -> Some (bar2 of a)
| _ -> None

为什么“Some”不能用于第二种方式?有没有另一种方法可以实现同样的目标?

最佳答案

您只需要使用 of在声明类型时,您可以使用 bar2 构造值构造函数如:

bar2 a

如果您将其更改为,您的第二个功能应该可以工作:
let (|MatchFoo2|_|) aString =
match aString with
| "abcd" -> Some (bar2 a)
| _ -> None

关于f# - 具有可区分联合的主动模式匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30755750/

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