リアクティブプログラミング9日目
あーるえっくす じゃばーーー
Operatorの命名規則
使用できないキーワード
元のRx.NETで使ってた名前はJavaですでに使われていたのでダメだったという話
singleなアイテムを発行~完了するOperatorはReturn(T)という名前だった
return(T) ⇒ just(T)
そのほか
switch ⇒ switchOnNext
Catch ⇒ onErrorResumeNext
型消去
型消去 is 何?
型消去 = 「イレイジャ」と呼ばれる
Javaの機能でこれについて書くと記事が1つできるレベルなのではしょると
コンパイラによってパラメータ化された型や型引数を含まない型に変換された物(あいまい)
ex.) List<String>のイレイジャはList
型消去で色々起こるので、まぁ何とかしようとかそんな感じの項目
下記のコードはダメみたい
サンプルコード
Flowable<R> flatMap(Function<? super T, ? extends Publisher<? extends R>> mapper) Flowable<R> flatMapMaybe(Function<? super T, ? extends MaybeSource<? extends R>> mapper)
Java8とラムダを使っている場合は曖昧で色々起こる可能性がある(キリがないのではしょります)
サンプルコード(concatWithの場合)
Flowable<T> concatWith(Publisher<? extends T> other); Flowable<T> concatWith(SingleSource<? extends T> other);
ラムダ式のインターフェース
サンプルコード
someSource.concatWith(s -> Single.just(2))
.subscribe(System.out::println, Throwable::printStackTrace);
このときSingle.just(2)は機能しない
concatWithのOverloadの種類が多すぎてコケる
正しくは下記のように書く
サンプルコード
someSource.concatWith(Single.defer(() -> Single.just(2)))
.subscribe(System.out::println, Throwable::printStackTrace);
場合によってはフローでもコケるので下記のように書く
サンプルコード
Flowable<T> merge(Publisher<? extends Publisher<? extends T>> sources); Flowable<T> mergeArray(Publisher<? extends T>... sources);
うーーーーーん。理解度が微妙だけど言いたいことはなんとなくわか・・・る・・・?
なんかこれも詰まった時ににらめっこ案件だな
正直今までで一番内容がふんわりしている・・・
理解したとは言い難いが立ち止まっても進まないので頭の片隅に置いておこう
今日はちょっとここまで、続きは明日