Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.

iOSCon

202 visualizaciones

Publicado el

iOSCon - Introduction to Functional Reactive Programming

Publicado en: Móvil
  • Sé el primero en comentar

  • Sé el primero en recomendar esto

iOSCon

  1. 1. Introduction to Functional Reactive Programming EliaszSawicki.com ( @EliSawic )
  2. 2. Functional Reactive Programming EliaszSawicki.com ( @EliSawic )
  3. 3. Streams EliaszSawicki.com ( @EliSawic )
  4. 4. Stream EliaszSawicki.com ( @EliSawic )
  5. 5. Arrays let values = [1, 2, 3, 4] let doubledValues = values.map { $0 * 2 } let higherThanTwo = values.filter { $0 > 2 } let sum = values.reduce(0, +) EliaszSawicki.com ( @EliSawic )
  6. 6. Filter EliaszSawicki.com ( @EliSawic )
  7. 7. Combine Latest EliaszSawicki.com ( @EliSawic )
  8. 8. Chaining manipulations let names = nameField.reactive.text EliaszSawicki.com ( @EliSawic )
  9. 9. Chaining manipulations names.filter { $0.characters.count >= 3} EliaszSawicki.com ( @EliSawic )
  10. 10. Chaining manipulations names.filter { $0.characters.count >= 3} .map { return "Dear" + $0 } EliaszSawicki.com ( @EliSawic )
  11. 11. Chaining manipulations let prefixedNames = names.filter { $0.characters.count >= 3} .map { return "Dear" + $0 } let combined = combineLatest(prefixedNames, surnames) combined.observeValues { prefixedNames, surname in print("Form input is (prefixedNames) (surname)") } EliaszSawicki.com ( @EliSawic )
  12. 12. www.rxmarbles.com EliaszSawicki.com ( @EliSawic )
  13. 13. ReactiveSwift EliaszSawicki.com ( @EliSawic )
  14. 14. Events flow EliaszSawicki.com ( @EliSawic )
  15. 15. Non-Terminating • Next EliaszSawicki.com ( @EliSawic )
  16. 16. Terminating • Completed • Failed • Interrupted (Reactive Cocoa) EliaszSawicki.com ( @EliSawic )
  17. 17. This screen is a signal EliaszSawicki.com ( @EliSawic )
  18. 18. Represents events over time EliaszSawicki.com ( @EliSawic )
  19. 19. Observe EliaszSawicki.com ( @EliSawic )
  20. 20. EliaszSawicki.com ( @EliSawic )
  21. 21. If you don't observe, it's gone EliaszSawicki.com ( @EliSawic )
  22. 22. Observing presentation.observeValues { idea in remember(idea: idea) } presentation.observeCompleted { print("Time for a break") } EliaszSawicki.com ( @EliSawic )
  23. 23. Signal producer EliaszSawicki.com ( @EliSawic )
  24. 24. Represents a tasks EliaszSawicki.com ( @EliSawic )
  25. 25. Does not start it's work if not asked EliaszSawicki.com ( @EliSawic )
  26. 26. Producing presenter.startWithSignal { (signal, _) in signal.observeValues { idea in print(idea) } signal.observeCompleted { print("Time for a break") } } EliaszSawicki.com ( @EliSawic )
  27. 27. Hot vs Cold EliaszSawicki.com ( @EliSawic )
  28. 28. Signal SignalProducer presentation.observeValues presentation.startWithValues EliaszSawicki.com ( @EliSawic )
  29. 29. Signal SignalProducer presentation.observeValues presentation.startWithValues emits values all the time waits for your request EliaszSawicki.com ( @EliSawic )
  30. 30. Properties EliaszSawicki.com ( @EliSawic )
  31. 31. Bindings EliaszSawicki.com ( @EliSawic )
  32. 32. Binding example let (slides, _) = Signal<Slide, NoError>.pipe() label.reactive.text <~ slides.map { return "Slide: ($0.number)" } EliaszSawicki.com ( @EliSawic )
  33. 33. Memory Management EliaszSawicki.com ( @EliSawic )
  34. 34. Disposables EliaszSawicki.com ( @EliSawic )
  35. 35. Free your memory let disposable = signal.observeValues { value in ... } deinit { disposable.dispose() } EliaszSawicki.com ( @EliSawic )
  36. 36. FUNctional reactive programming EliaszSawicki.com ( @EliSawic )

×