2011年12月8日

Rx談義 20111208

個人の勉強のために勝手にまとめています。
RX
0
尾上 雅則 @ugaya40

@okazuki @neuecc あー挙動の違いがひどいからSubjectをPublishに渡すように変更になったんですかね。

2011-12-08 09:21:51
尾上 雅則 @ugaya40

ConnectableObservableを見てて理解した気になったけど、果たして本当に理解しているのか謎

2011-12-08 09:23:37
尾上 雅則 @ugaya40

ConnectableObservableはConnectした時点で流れてくるソースの値をsubjectにSubscribeする(流す)。ConnectableObservableをSubscribeするとsubject自体がSubscribeされる。これがPublishか。

2011-12-08 09:31:09
かずき(Kazuki Ota) @okazuki

@ugaya40 @neuecc あー、どうなんでしょうね?そこらへんは、日本のRxの生き字引の、のいえさんが起きる10:50くらいまで待つしか無いですね。

2011-12-08 09:40:44
neuecc @neuecc

@ugaya40 @okazuki Rangeだけで検証していると陥りがちですが、イベントとか無限リストも踏まえないとダメです。あと、OnCompletedは必ず来るものではないわけなので、Subjectを検証するにあたり、OnCompletedを実行後と考えるのもよくないです。

2011-12-08 11:28:38
neuecc @neuecc

@ugaya40 @okazuki BehaviorSubject(を使ったPublish)は完全に無限リスト向けでしょう、具体的にイメージするなら初期値付きイベント。AsyncSubjectはTPLを分かっているのならTaskCompletionSourceそのものです。

2011-12-08 11:28:53
neuecc @neuecc

@ugaya40 @okazuki 同じメソッド名という点ではPublishのオーバーロードはイベントor初期値付きイベントなので、そんな不自然ではないかなあ、と。PublishLastは別のメソッド名ですよね(以前のPruneというイミフな名前よりはずっといいかと!)。

2011-12-08 11:29:32
neuecc @neuecc

@ugaya40 @okazuki 「挙動の違いがひどいからSubjectをPublishに渡すように変更になったんですかね。」というのは、文面が何を指して何を言っているのか分からないです。SubjectをPublishに渡す……?変更?。といったところでしょーか。

2011-12-08 11:30:17
尾上 雅則 @ugaya40

@neuecc @okazuki 最初はOnCompleted実行後とか考えてなかったんですが、AsyncSubjectがOnCompleted後じゃないと値が流れないのを気づけず、そこを@okazukiさんに指摘を受けたので入れました。

2011-12-08 12:01:44
尾上 雅則 @ugaya40

@neuecc @okazuki PublishがSubjectを受けるように変更云々は、@neueccさんの1年前のこの記事です http://t.co/yZRdKFaC

2011-12-08 12:04:26
neuecc @neuecc

@ugaya40 あー、すみません、 http://t.co/yKoM4NSR ですね、見落としてました。

2011-12-08 12:05:44
尾上 雅則 @ugaya40

@neuecc PublishとPublishLastが違うメソッド名なのはわかりますが、同じPublishってつくのに、Connect後にSubscribeしたものでも値が取れるのが気になったんですー。初期値付きかそうでないかははい。

2011-12-08 12:07:46
尾上 雅則 @ugaya40

@neuecc @okazuki BehaviorSubjectとか、IO二つのinterfaceを使った基本実装とか、今夜見てみるつもりです。お時間の無いところありがとうございました><

2011-12-08 12:09:24
尾上 雅則 @ugaya40

AsyncSubjectの用途である、非同期を模す=OnNext()OnCompleted()がセット、つまりOnCompletedまで値を流さなくても問題ない、か。

2011-12-08 12:11:12
neuecc @neuecc

@ugaya40 柔軟性の確保(野良Subject対応とか)のためにMulticastを追加したらPublishの意義が微妙になったので、ついでに、APIを整理しただけかなー、と。とはいえ、その変更もまた翌月に一瞬で消滅しましたね。

2011-12-08 12:18:57
neuecc @neuecc

@ugaya40 引数にラムダを受け取る(外部変数を用意する必要がなくConnect)PublishとMulticast、に分けたわけですが、すぐに再変更かかったのは、結局のとこ一々Subjectをnewするのが激しく面倒くさかった(&匿名型に対応できない)からな感。

2011-12-08 12:20:24

コメント

コメントがまだありません。感想を最初に伝えてみませんか?