RxSwiftのメソッドチェーン


はじめに

初めまして!
タップルでRxSwift武者修行中のせーたろです。

RxSwiftを書き始めてから知ったメソッドチェーンの備忘録兼メモです。

メソッドチェーンとは

メソッドを組み合わせた書き方をすることによって、関数型プログラミングの副作用を避ける方法を取り入れたプログラミングをし、より読みやすく宣言的なコードを書いています。
宣言的なコーディングを実現するため、メソッドチェ-ンによる処理の記述が基本であり重要です。

map と subscribe による例

// 入力されたInt型の値を2倍する
_ = Observable.just(10) 
.map { $0 * 2 } 
.subscribe(onNext: { print($0) // => 20 
})

型が同じ限り一生.mapとかの処理をつなげられるけど、
この場合.subscribeしたら型が変わるのでdisposeBagして終了

(多分このつなげて書くやつをつよつよの人は"比較的宣言的な書き方"と言ってるっぽいです)

そして、mapのクロージャの戻り値を Int → Stringにすると
購読できるイベントもInt → Stringになります。
map に使われているクロージャの戻り値によって購読できる型が変わるということです

RxSwiftのオペレータはジェネリクスを使ったインタフェースを定義することで、メソッドチェ-ンを実現しています。