# RxSwiftのSignalとCombineフレームワークにおけるmergeとCombineLatestの違い
2024-02-10 16:09
mergeとCombineLatestはどちらも2つのストリームを束ねるため、違いが分かりにくい。 mergeはどちらかに値が流れたら実行するOR条件、CombineLatestは両方に値が流れたら実行するAND条件として使い分ける。
# RxSwiftのSignalは1つの値かエラーを流して完了する
SignalはRxSwiftのobservable sequenceの一種である。 1つの値またはエラーイベントのみをEmitし、その後にCompleteする。
Signalの説明は次の資料で確認した。
- RxSwiftのSignalについて (opens new window)
- RxSwift: Reactive Programming with Swift, Second Edition (opens new window)
- Introduction to RxSwift (opens new window)
# mergeはOR条件、CombineLatestはAND条件で実行される
mergeとCombineLatestは、どちらもストリームを束ねる機能である。 違いは、束ねた後の処理が実行されるタイミングにある。
| 機能 | 実行されるタイミング | 条件の考え方 |
|---|---|---|
| merge | 2つのストリームのどちらかに値が流れたとき | OR条件 |
| CombineLatest | 2つのストリームの両方に値が流れたとき | AND条件 |
この違いは次の記事を参考にした。