gpt4 book ai didi

f# - 可区分联合上的模式匹配

转载 作者:行者123 更新时间:2023-12-04 11:32:49 24 4
gpt4 key购买 nike

有没有办法对可区分的联合函数进行模式匹配,例如:-

type Test =
| A of string
| B of int
| C of char

let DefaultTest t =
match t with
| A(_) -> A(null)
| B(_) -> B(0)
| C(_) -> C('\u0000')

let a = A |> DefaultTest

显然,这段代码不是有效的 F#,因为 DefaultTest 接受一个 Test 类型的参数,而不是 'a -> Test。有没有办法在不为受歧视联合指定值的情况下实现这一目标?

我所追求的最终是一个函数,它输入一个类型为 'a -> Test 的函数并输出 Test('a 的默认值)。

最佳答案

我不清楚你在追求什么,但这有帮助吗?

type Foo =
| A of int
| B of string

let CallWithDefault f =
let x = Unchecked.defaultof<_>
f x

let defaultA = CallWithDefault A
let defaultB = CallWithDefault B
printfn "(%A) (%A)" defaultA defaultB

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

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