GoDev

Blog programisty.

Programowanie Reaktywne - Transformers - Select.


Artykuł ten jest częścią serii artykułów na temat Programowania reaktywnego.

Zapraszam na GitHub-a.

Tematy

  1. Wstęp
  2. Zabawa z czasem - Timer
  3. Kto za tym stoi? - Scheduler
  4. Nie zapominaj - Subscribe
  5. Zabawa z czasem - Interval
  6. Zabawa z czasem - Buffer
  7. Zabawa z czasem - Delay
  8. Zabawa z czasem - Sample
  9. Zabawa z czasem - Throttle
  10. Zabawa z czasem - Timestamp/TimeInterval
  11. Tworzymy dane - Generators
  12. Tworzymy dane - Własna klasa publikująca
  13. Marudzimy - Skip
  14. Marudzimy - Take
  15. Łap To! - ConsoleKey
  16. Kombinatorzy - Concat
  17. Kombinatorzy - Repeat
  18. Kombinatorzy - Start With
  19. Kombinatorzy - Ambiguous
  20. Kombinatorzy - Merge
  21. Kombinatorzy - Zip
  22. Kombinatorzy - Switch
  23. Kombinatorzy - When-And-Then
  24. Kombinatorzy - Combine Latest
  25. Transformers - Select
  26. Transformers - OfType and Cast
  27. Transformers - Metadata
  28. Bileciki do kontroli - Unit Tests of Interval
  29. Bileciki do kontroli - Unit Tests of Observer Interval
  30. Bileciki do kontroli - Unit Tests of Create Cold/Hot Observable
  31. Szpryca - AutoFac

Wstęp

Reactive Extensions - Select 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

Reactive Extensions - 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:


Wcześniejszy: Programowanie Reaktywne - Kombinatorzy - Combine Latest

Następny: Programowanie Reaktywne - Transformers - OfType and Cast