Если у меня есть различное объединение различных типов массивов, как я могу преобразовать их в их «реальные» типы?
type ItemStuff =
| Colors of string[]
| Sizes of int[]
let foo = Sizes [|1;2;3|]
После запуска вышеупомянутого, когда я получаю значение foo, я вижу:
val foo : ItemStuff = Sizes [|1;2;3|]
Как я могу получить фактический массив int из foo? Мне просто не хватает синтаксиса, который позволяет мне получить доступ к чему-то вроде
foo.[2]
? Я не могу перечислить через foo, поэтому я не смог использовать карту. Я мог бы написать член для ItemStuff, который возвращает правильно типизированный массив для каждого другого типа массива, который я возвращаю, но это просто не так?
Какие мои лучшие подходы здесь?
Вот что я в итоге сделал. есть идеи о лучших способах сделать это?
type ItemProp =
| Colors of string[]
| Sizes of int[]
| Quants of int[]
member this.GetColors() =
match this with
| Colors (stringArray) ->
stringArray
| _ -> null
member this.GetIntArr() =
match this with
| Sizes (intArray) | Quants (intArray) ->
intArray
|_ -> null
foo.GetIntArr()