Artykuł ten jest częścią serii artykułów na temat Programowania reaktywnego.
Zapraszam na GitHub-a.
Tematy
- Wstęp
- Zabawa z czasem - Timer
- Kto za tym stoi? - Scheduler
- Nie zapominaj - Subscribe
- Zabawa z czasem - Interval
- Zabawa z czasem - Buffer
- Zabawa z czasem - Delay
- Zabawa z czasem - Sample
- Zabawa z czasem - Throttle
- Zabawa z czasem - Timestamp/TimeInterval
- Tworzymy dane - Generators
- Tworzymy dane - Własna klasa publikująca
- Marudzimy - Skip
- Marudzimy - Take
- Łap To! - ConsoleKey
- Kombinatorzy - Concat
- Kombinatorzy - Repeat
- Kombinatorzy - Start With
- Kombinatorzy - Ambiguous
- Kombinatorzy - Merge
- Kombinatorzy - Zip
- Kombinatorzy - Switch
- Kombinatorzy - When-And-Then
- Kombinatorzy - Combine Latest
- Transformers - Select
- Transformers - OfType and Cast
- Transformers - Metadata
- Bileciki do kontroli - Unit Tests of Interval
- Bileciki do kontroli - Unit Tests of Observer Interval
- Bileciki do kontroli - Unit Tests of Create Cold/Hot Observable
- Szpryca - AutoFac
Wstęp
Przyszła pora by troszkę się pobawić Transformers-ami. Autoboty - transformacja… Otwieram tym samym mikro cykl transformacji strumieni prosto z Cybertron-u.
Pomijając luźne aluzje, przetwarzanie danych pochodzących od dystrybutorów to powszechna praktyka i poniższy przy przykład choć trywialny może zaprocentować w przyszłości.
Observable.Select
Najprostszy operatorek (Select), ale jaki potężny. Dzięki niemu możemy manipulować czasoprzestrzenią dystrybuowanych danych.
Na starcie korzystając z RxLib tworzymy prosty strumień, który to następnie nieco zmodyfikujemy.
A jak działa Select? Jak krowa. Bierze do pyska. Mieli, mieli, mieli i jest mleko:)
Dostaje towar, i opakowuje jak mu zagramy.
Z prostej liczby z zakresu od 0 do 255 stworzymy obiekt zawierający samą liczbę oraz ich binarną i heksadecymalną postać.
1
2
3
4
5
6
7
8
9
10
11
var observableStream = GeneratorFactory.CreateGenerator(0, 255, 1, 50);
var selectSubscribent = observableStream
.Select(
item => new
{
Number = item,
Bits = Convert.ToString(item, 2),
Hex = Convert.ToString(item, 16).ToUpper()
}
).DefaultPrint("Select");
Na koniec wszystko wyświetlamy i gotowe. Prosty przykład jak można zrobić coś z pozornie nieznaczącej liczby. Z poczwarki w motyla…
Zakończenie
Mieliśmy już przyjemność korzystać z transformacji w postach dotyczących: Timestamp/TimeInterval.
Wówczas opisałem na szybko działanie, ze względu na potrzebę użycia. Pozostało jeszcze kilka Autobotów po wojnie z Decepticon-ami. Zapraszam do śledzenia :).
Jest to post wchodzący w skład podjętego wyzwania ogłoszonego przez MIROBURN we vlogu z dnia 3 lutego 2018 roku.
Celem wyzwania jest systematyczne działanie w ciągu 30 dni.
Postanowiłem pisać post dziennie o tematyce Programowania Reaktywnego dla platformy .NET.
Wszelkie źródła związane z postami znajdują się na repozytorium GitHub.
Stan obecny wyzwania: 30 z 30 dni.
Referencje:
- MSDN - Getting Started with Rx,
- MSDN - Reactive Extensions,
- 101 Rx Samples,
- ReactiveX,
- Code Project,
- GitHub
Wcześniejszy: Programowanie Reaktywne - Kombinatorzy - Combine Latest
Następny: Programowanie Reaktywne - Transformers - OfType and Cast