Trong C#, các mã sau đây là hợp lệ:F # tương đương của Enum.TryParse
MyEnum myEnum = MyEnum.DEFAULT;
if (Enum.TryParse<MyEnum>(string, out myEnum))
{
Console.WriteLine("Success!");
}
Vì vậy, tôi nghĩ tôi sẽ sử dụng này trong F #. Đây là nỗ lực của tôi:
let mutable myEnum = MyEnum.DEFAULT
if Enum.TryParse<MyEnum>(string, &myEnum) then
printfn "Success!"
Nhưng nó than phiền
a generic construct requires that the type 'MyEnum' have a default constructor
gì trên thế giới Điều đó có nghĩa là gì?
Tôi không thể tạo lại điều này nếu tôi thay đổi 'MyEnum' cho' System.DayOfWeek'. Định nghĩa của 'MyEnum' là gì? FYI bạn có thể loại bỏ sự cần thiết cho 'mutable' bằng cách làm' let (ok, myEnum) = Enum.TryParse (chuỗi) 'thay thế. –
Lee
Enum của bạn được xác định như thế nào? Tôi nghĩ rằng bạn có thể đang cố gắng phân tích một công đoàn kỳ thị như enum thay thế. – scrwtp
@scrwtp, bạn hoàn toàn đúng. Tôi đã không nhận ra có một sự khác biệt nhỏ trong cách nó được định nghĩa trong F #. Đã phải xem https://fsharpforfunandprofit.com/posts/enum-types/ để hiểu. Nếu bạn thực hiện câu trả lời này, tôi sẽ đặt câu trả lời là "câu trả lời". – user3685285