2013-11-04 10 views
7

I mają następujące funkcje:F # Tablica flatmap

let fetchTickerGroup (tickers: string[]) (sqlServer:SQLServerClient) (schema: string) = 
tickers |> Array.map(fun x -> sqlServer.FetchTimeSerie(schema,x)) 

Funkcja przyjmuje szereg strun, a przez sqlServer pobiera dane, które są zwracane przez sqlServer.FetchTimeSerie jako List<b> gdzie b jest niestandardowy zdefiniowanego przedmiotu. Teraz mapowanie tablicy oznacza, że ​​funkcja fetchTickerGroup zwraca List<b>[].

Zastanawiam się, czy możliwe byłoby uzyskanie wyniku w postaci flatMap, a nie tylko odwzorowanie wartości tablicy.

Odpowiedz

12

Nie mam pojęcia, co to jest Flatmap, ale myślę, że chcesz użyć *.collect.

Myślę, że najlepszym rozwiązaniem byłoby coś

tickers |> Array.toList |> List.collect (fun x -> sqlServer.FetchTimeSerie(schema,x)) 

trzeba przekształcić tak, że masz listy lub tablicy tylko typy

+9

FlatMap, zbierać i SelectMany są różne nazwy dla tej samej koncepcji –

+1

@ Gustavo: dziękuję, pochodząc ze Scali Użyłem niewłaściwej terminologii. – NoIdeaHowToFixThis