
今日のお題は掲題の通りです。
議論の元となったのはこちら。

「 StateFlow
使ってるサンプルの多くが collect
使ってる」
「でも最新ほしいなら collectLates
じゃないの??」
「どっち使うかはこいつらに渡すaction blockの性質とかで決まるの?どうなの?」
といったところでしょうか。
Adam Powell氏いわく、以下のようです。


上の画像内にあるリンク先はこちら
collectLeast
はaction blockの実行中に次の値が来ると、その処理をcancelして次のaction blockを実行する- 明らかに必要ではないのに
collectLeast
を利用するといらないoverheadが発生する - さらに、いい感じに値がemitされた場合、結果が得られるまで長時間かかる可能性がある(action block完了前にcancel、が何度も起こる)
- ものによっては、↑のようになってしまうよりも、古い結果を流してしまうほうが状況に合うケースがある
確かにやりたいことだけを考えれば collectLeast
ですが(実際議論の前半はcollectLeast
優勢でした)、overhead等も考慮すると不要なcollectLeast
は避けたほうがいいのかもしれないですね。
(ここまで考慮できるくらいKotlinに詳しくなりたい/月並)