는 내가 기록의 목록을는
type Item = { Color : string; Size : int}
let itemList = [{Color="Red"; Size=1};
{Color="Green"; Size=2};
{Color="Blue"; Size=3};]
내가 [같은 값의 배열로 레코드를 내 목록을 설정 얻기 위해 찾고 | "레드"; "녹색", "블루"|] 또는 [| 1; 2; 3 |] 내가 그렇다고이
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))
처럼 거기에 도착 할 수 있지만 내가 GetProp S itemList
를 호출 할 때 내가 돌아올
[| 크기 1; 크기 2; 크기 3 |. 유용하지만 정확한 것은 아닙니다.
나는 다음과 같은
let 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)
을 시도했지만 그것은 두 개의 서로 다른 반환 형식을 좋아하지 않는다.
다른 방법 (더 기능적입니까?)에 대한 의견을 제시하고 의견을 보내 주시면 감사하겠습니다.
배열은 다음에 사용할 외부 lib에 필요한 인수 유형입니다. 어떻게하면 레코드 목록에서 특정 값의 seq로 갈 수 있습니까? – RobRolls
모든 목록은 이미 seq이며 배열도 마찬가지입니다. .NET 용어로 seq는'IEnumerable'입니다. 배열이나리스트를 무작위 seq (그리고 아마도 lazy)로부터 만들 필요가 있다면,'Seq.toArray'와'Seq.toList'는 그 트릭을 할 것입니다. –