i ont une liste d'enregistrementsDe retour différents types de tableaux d'une expression lambda en F #
type Item = { Color : string; Size : int}
let itemList = [{Color="Red"; Size=1};
{Color="Green"; Size=2};
{Color="Blue"; Size=3};]
Je cherche à obtenir tourner ma liste d'enregistrements dans un tableau de valeurs comme [| « Red »; "vert", "bleu" |] ou [| 1; 2; 3 |]
Je peux sorta y arriver comme ça
type ItemType =
| Color of string
| Size of int
type ItemEnum =
| C
| S
let GetProp x y =
match x with
| C -> List.toArray y |> Array.map(fun x -> ItemType.Color(x.Color))
| S -> List.toArray y |> Array.map(fun x -> ItemType.Size(x.Size))
mais quand je l'appelle GetProp S itemList
je retourner [| Taille 1; Taille 2; Taille 3 |]. Utile mais pas exactement ce que je cherche.
J'ai essayé la
suivantelet GetProp2 x y : 'a[] =
match x with
| Color -> List.toArray y |> Array.map(fun x -> x.Color)
| Size -> List.toArray y |> Array.map(fun x -> x.Size)
mais il n'aime pas les deux types de retour différents.
Je suis ouvert à des suggestions sur les différentes façons (plus fonctionnelles?) De le faire et j'apprécierais votre contribution.
le tableau est le type d'argument requis par la bibliothèque externe que j'utilise ensuite. Comment passer de la liste des enregistrements au seq de la valeur particulière? – RobRolls
Toute liste est déjà un seq, tout comme n'importe quel tableau. En termes .NET, seq est 'IEnumerable'. Si vous avez besoin de faire un tableau ou une liste de n'importe quel seq aléatoire (et peut-être un paresseux), alors Seq.toArray et Seq.toList feront l'affaire. –