gpt4 book ai didi

f# - 测试一个值是否是可区分联合的特定实例

转载 作者:行者123 更新时间:2023-12-05 08:21:06 25 4
gpt4 key购买 nike

如果我有一个受歧视的工会

type Result<'T,'U> =
| Success of 'T
| Failure of 'U

然后我可以创建一个模式匹配函数来测试是否成功

let success = function
| Success(_) -> true
| _ -> false

我可以将其创建为一个衬垫吗?

let success = fun x -> x = Success(_)

最后一行没有通过编译,但我认为它表明了我的意图

最佳答案

没有简单的方法可以做到这一点,但您可以通过反射(reflection)来做到这一点。使用 this answer 中的 isUn​​ionCase 函数,我们可以写:

let success = isUnionCase <@ Success @>

对于这种特殊情况,我认为 success 函数足够简洁,可以作为一行代码:

let success = function Success _ -> true | _ -> false

正如@Daniel 所说,应该公开编译器生成的Is* 函数。有一个related suggestion在 User Voice 上,也许您应该投票以便在 F# 4.0 中实现它。

关于f# - 测试一个值是否是可区分联合的特定实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23619363/

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