なぜReactive Extensionなのか?
これは、何か?Frameworkだ。ということは、Class, Protocol, Struct, Enumを提供するのだ。それは、非同期処理、Event処理とデータ処理の直交化する事を支援する。
Eventの発生とその結果は常にタイムラグがある。ボタンを押してテキストが変化するのは瞬時に行われる様に見えるが、Web APIへのリクエストとレスポンスは常にタイムラグがあり、テキスト入力だって、それが完了するまでBSを押したり、タイムラグが存在する。
タイムラグの存在を加味して、Event処理を行いやすくするのがReactive Extensionなのだ。
🔹データ処理の直交化
- コレクションを処理するためにSequneceを導入
- イベントを処理するためにPublisherを導入
- ともにmap, flatMapで統一的に扱える
素敵なリンク集
ReactiveX入門 俺が書きたかった事が書いてある。
Rxとは?Linqとの繋がりは?
記載事項に正誤あり!
誤:「Pull型の場合は、プログラムはIEnumerator
正:「Pull型の場合は、プログラムはIEnumerable
▶️IEnumerableはforに応答するオブジェクトを抽象化したものだ。内部では、++
する様に、IEnumeratorに対してnextメソッドを呼出す。i
に相当するIIteratorも内包する。
IEnumerableに適合したArrayはforに代わるforEachに応答する様になる。さらに、map, reduce, filterにも応答する様になる。
▶️同様にObservableはOberverを内包、というかsubscribeしており、Oberverのnextメソッドを呼出す。Observableに適合したPublisherはmap, reduce, filterにも応答する様になる。
RxSwiftの内部実装
RxSwiftを動かしてみる
その1にSubjectとその派生物4つの説明が、よく読めばわかる程度に記載されている。PublishSubject, ReplaySubject, BehabiorSubject, Variantの4つ。最後のヤツは、DisposeBagを保存せずとも、勝手にunsubscribeされる便利屋なつ。
SubjectがObservable, Observerの2役をこなす、ってところがよく解らん。❓
Rxマーブルダイアグラム
Rx公式サイト
Apple Combine Video
Qiitaの記事:Swift5.1カスタム属性
[和文で読めるCombine記事、[Swift] はじめてのCombine | Apple製の非同期フレームワークを使ってみよう](https://dev.classmethod.jp/smartphone/swift-combine-framework-for-beginners/) |