In C#, der folgende Code gilt:F # Equivalent von Enum.TryParse
MyEnum myEnum = MyEnum.DEFAULT;
if (Enum.TryParse<MyEnum>(string, out myEnum))
{
Console.WriteLine("Success!");
}
Also dachte ich, ich würde das Produkt # in F verwenden. Hier ist mein Versuch:
let mutable myEnum = MyEnum.DEFAULT
if Enum.TryParse<MyEnum>(string, &myEnum) then
printfn "Success!"
Aber es klagt
a generic construct requires that the type 'MyEnum' have a default constructor
Was in der Welt bedeutet das?
Ich kann das nicht reproduzieren, wenn ich 'MyEnum' für' System.DayOfWeek' ändere. Was ist die Definition von "MyEnum"? FYI Sie können die Notwendigkeit für "veränderbar" entfernen, indem Sie stattdessen "let (ok, myEnum) = Enum.TryParse (string)" verwenden. –
Lee
Wie ist Ihr Enum definiert? Ich denke, dass Sie versuchen könnten, eine diskriminierte Union stattdessen als Enum zu analysieren. – scrwtp
@scrwtp, Sie sind völlig richtig. Ich wusste nicht, dass es einen kleinen Unterschied in der Definition in F # gibt. Musste sich https://fsharpfforfunandprofit.com/posts/enum-types/ ansehen um zu verstehen. Wenn Sie dies zu einer Antwort machen, werde ich es als "die Antwort" festlegen. – user3685285