gpt4 book ai didi

enums - F#等效于Enum.TryParse

转载 作者:行者123 更新时间:2023-12-04 07:33:35 24 4
gpt4 key购买 nike

在C#中,以下代码有效:

MyEnum myEnum = MyEnum.DEFAULT;
if (Enum.TryParse<MyEnum>(string, out myEnum))
{
Console.WriteLine("Success!");
}

所以我想我会在F#中使用它。这是我的尝试:
let mutable myEnum = MyEnum.DEFAULT
if Enum.TryParse<MyEnum>(string, &myEnum) then
printfn "Success!"

但它提示
a generic construct requires that the type 'MyEnum' have a default constructor
这到底是什么意思?

最佳答案

如果您尝试使用Enum.TryParse解析已区分的并集值,这是编译器会给您的一条无用的消息(如果在技术上正确)。

更准确地说,如果您看一下该函数,您会发现它使用限制为默认构造函数的值类型的类型进行了参数化。 DU都不满足这两个条件-这就是编译器所提示的。

与C#不同,在F#中定义枚举时,需要显式为每个标签赋予一个值:

type MyEnum = 
| Default = 0
| Custom = 1
| Fancy = 2

跳过这些值将使编译器将类型解释为有区别的联合,这是非常不同的野兽。

关于enums - F#等效于Enum.TryParse,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41489599/

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