Proszę, daj mi znać, jak działa operator SelectMany
w Rx. Nie wiem też więcej o tym operatorze w Linq.Wybierz wiele w Rx
Proszę wyjaśnić to za pomocą prostego przykładu, a także w jakim przypadku użyjemy tego operatora w Rx.
Proszę, daj mi znać, jak działa operator SelectMany
w Rx. Nie wiem też więcej o tym operatorze w Linq.Wybierz wiele w Rx
Proszę wyjaśnić to za pomocą prostego przykładu, a także w jakim przypadku użyjemy tego operatora w Rx.
łączy projekcję i spłaszczenie w jednym kroku. Załóżmy, że masz kilka wykazów takich jak { {1, 2}, {3, 4, 5}, { 6, 7 } }
można użyć SelectMany
aby je spłaszczyć do jednego wykazu takich jak: { 1, 2, 3, 4, 5, 6, 7}
SelectMany
w Rx może spłaszczyć do jednego z wielu sekwencji obserwowalny (nie są w rzeczywistości kilka przeciążenia).
Dla praktycznego przykładu załóżmy, że masz funkcję DownloadFile(filename)
, która daje obserwowalność, która generuje wartość, gdy plik zostanie pobrany. Teraz można napisać:
string[] files = { "http://.../1", "http://.../2", "http://.../3" };
files.ToObservable()
.SelectMany(file => DownloadFile(file))
.Take(3)
.Subscribe(c => Console.WriteLine("Got " + c) ,()=> Console.WriteLine("Completed!"));
Wszystkie 3 obserwable z DownloadFile
są spłaszczone w jeden, więc można czekać na 3 wartości przyjeżdżać, aby zobaczyć, że wszystkie pliki do pobrania są zakończone.
Nie mogłem zrozumieć, dlaczego użyłeś tutaj SelectMany w twoim kodzie, nie masz listy list -> nie dostałeś żadnego spłaszczenia, to znaczy, jak wynik będzie inny w twoim kod, jeśli właśnie użyłeś wybierz? –
Z 'Select', skończyłbyś z obserwowalną obserwowalnością. – Asti
Czy mógłbyś wyjaśnić więcej? to nie było dla mnie jasne, wciąż jestem nowy w LINQ i RX –
SelectMany tylko:
source.Select(selector).Merge();
Innymi słowy, wybór źródła sygnału wejściowego do strumienia obserwabli, to spłaszcza każdy Obserwowalne do strumienia wyników.
znalazłem ten krótki film pomocne w zrozumieniu SelectMany dla Rx (oraz bardziej zaawansowanym wykorzystaniu diagramów marmur): http://channel9.msdn.com/Blogs/J.Van.Gogh/Reactive-Extensions-API-in-depth-SelectMany
http://stackoverflow.com/questions/3869329/rx-enumerableex-for-vs -enumerable-selectmany –
Wydaje się nieco skomplikowane .. Jestem całkiem nowy w tej technologii. możesz podać prosty przykład – StezPet