У меня есть перечисление в F#, например:
type Creature =
| SmallCreature = 0
| MediumCreature = 1
| GiantCreature = 2
| HumongousCreature = 3
| CreatureOfNondescriptSize = 4
Мне не нравится вводить числа вручную, и я хочу легко вставлять дополнительные элементы в перечисление позже, не меняя числа.
я пробовал это
type Creature =
| SmallCreature
| MediumCreature
| GiantCreature
| HumongousCreature
| CreatureOfNondescriptSize
но это вызвало ошибку The type 'Creature' is not a CLI enum type
позже в программе
let input = Int32.Parse(Console.ReadLine())
let output = match EnumOfValue<int, Creature>(input) with // <---Error occurs here
| Creature.SmallCreature -> "Rat"
| Creature.MediumCreature -> "Dog"
| Creature.GiantCreature -> "Elephant"
| Creature.HumongousCreature -> "Whale"
| Creature.CreatureOfNondescriptSize -> "Jon Skeet"
| _ -> "Unacceptably Hideous Monstrosity"
Console.WriteLine(output)
Console.WriteLine()
Console.WriteLine("Press any key to exit...")
Console.Read() |> ignore
Как я могу определить перечисление без ручного присвоения числовых значений каждому элементу?
[<RequireQualifiedAccess>]
, поскольку случаи DU являются членами верхнего уровня объемлющего пространства имен. - person Daniel   schedule 17.08.2011