Transforming ๊ณผ Filtering ์ ์ด์ด์ Combine ์ฐ์ฐ์๋ค์๋ํด ์์๋ณด์. ๋จผ์ Prepending ์ฐ์ฐ์์ด๋ค. prepend ์ฐ์ฐ์๋ ํ๋ ์ด์์ ๊ฐ์ ์คํธ๋ฆผ ์์ ์ถ๊ฐํ๋๋ฐ ์ฌ์ฉ๋๋ค. ๊ฐ์ ธ์ฌ ์คํธ๋ฆผ ์์ ์ด๋ฒคํธ๋ฅผ ๋ถ์ฌ์ฃผ๊ณ ์ถ์ ๋ append์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์.
Combining ์ฐ์ฐ์์ธ append ์ฐ์ฐ์๋ prepend ์ฒ๋ผ ๊ฐ์ด๋ ํผ๋ธ๋ฆฌ์ ์ ๋ํด์ฃผ๋ ์ฐ์ฐ์์ง๋ง prepend๋ ์์๋ถ์ฌ์ฃผ์๋ค๋ฉด append๋ ๋ค์ ๋ถ์ฌ์ฃผ๋ ์ฐ์ฐ์์ด๋ค.
switchToLatest ์ฐ์ฐ์๋ ์ค์ฒฉ๋ Publisher๋ฅผ ๋ค๋ฃฐ ๋ ์ ์ฉํฉ๋๋ค. Publisher๊ฐ ๋ ๋ค๋ฅธ Publisher๋ฅผ ๋ฐฉ์ถํ ๋ ์ฌ์ฉ๋๋ฉฐ, ์ต์ Publisher๊ฐ ๋ฐฉ์ถํ๋ ๊ฐ๋ง์ ๊ตฌ๋ ํ๊ณ ์ด์ ์ ๊ตฌ๋ ํ๋ Publisher๋ ์ทจ์ํ๋ค. ์ ์์ ์์ firstPublisher๋ฅผ ๊ตฌ๋ ํ๋ค secondPublisher ๋ฅผ ๋ค์ ๊ตฌ๋ ํ์ firstPublisher๊ฐ ๋์ง๋ ์ด๋ฒคํธ๋ฅผ ์น๊ณ secondPublisher๊ฐ ๋์ง๋ ์ด๋ฒคํธ๋ฅผ ๋ฐ๋๊ฒ์ ํ์ธํ ์ ์๋ค.
merge ์ฐ์ฐ์๋ ์ฌ๋ฌ Publisher๋ก๋ถํฐ ๋ฐฉ์ถ๋๋ ๊ฐ์ ํ๋์ ์คํธ๋ฆผ์ผ๋ก ๊ฒฐํฉํ ๋ ์ฌ์ฉ๋๋ค. ์ด ์ฐ์ฐ์๋ ๋ค์์ Publisher๊ฐ ๋ ๋ฆฝ์ ์ผ๋ก ์์ฑํ ๊ฐ์ ์์ฐจ์ ์ผ๋ก ์์ ํ ์ ์์ผ๋ฉฐ, ๊ฐ Publisher์ ์ถ๋ ฅ์ ์๊ฐ ์์์ ๋ฐ๋ผ ํฉ์ณ์ง ๋จ์ผ ์คํธ๋ฆผ์ผ๋ก ๊ด์ฐฐ๋๋ค. merge๋ ํนํ ๋ณต์์ ์์ค์์ ๋์์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ผ ํ ๋ ์ ์ฉํ๊ฒ ์ฌ์ฉ๋๋ค.
CombineLatest ์ฐ์ฐ์๋ ๋ ๊ฐ ์ด์์ Publisher๋ก๋ถํฐ ๊ฐ๊ฐ์ ์ต์ ๊ฐ์ ๊ฒฐํฉํ์ฌ ์๋ก์ด ๊ฐ์ด ํ๋์ Publisher๋ก๋ถํฐ ๋ฐฉ์ถ๋ ๋๋ง๋ค ๊ฒฐ๊ณผ๋ฅผ ์์ฑํ๋ค . ์ด ๋ ๊ฐ Publisher๊ฐ ์ต์ ํ ๋ฒ์ ๊ฐ์ ๋ฐฉ์ถํ ๋๊น์ง ๊ฒฐ๊ณผ๋ฅผ ์์ฑํ์ง ์๋๋ค. ์ฌ๋ฌ ๋ฐ์ดํฐ ์์ค์ ์ต์ ์ํ๋ฅผ ๋ฐ์ํ ๋ ์ ์ฉํ๋ค.
zip ์ฐ์ฐ์๋ ์ฌ๋ฌ Publisher์ ๊ฐ์ ์์ผ๋ก ๊ฒฐํฉํ ๋ ์ฌ์ฉ๋๋ค. ๊ฐ Publisher๋ก๋ถํฐ ๊ฐ์ด ํ๋์ฉ ๋ฐฉ์ถ๋ ๋๋ง๋ค ํด๋น ๊ฐ๋ค์ ๊ทธ๋ฃนํํ์ฌ ํํ๋ก ๋ฐ์ ์ ์๋ค. ๋์์ ์ฌ๋ฌ ๋ฐ์ดํฐ ์์ค๋ก๋ถํฐ ๋๋ฑํ ์์ ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํ ๋ ์ ์ฉํ๋ฉฐ, ๊ฐ Publisher์ ๋ฐฉ์ถ ์๋์ ๋ฐ๋ผ ๊ฐ์ด ๋๊ธฐํ ์๋ ์๋ค ( ์ ์์ ์์ 1,2๊ฐ ๋จผ์ ๋ค์ด๊ฐ๋ zipํ ํผ๋ธ๋ฆฌ์ ๊ฐ ๊ฐ ๋ฐฉ์ถํ ๋๊น์ง ๋๊ธฐ)
https://www.kodeco.com/5429795-reactive-programming-in-ios-with-combine/lessons/20
'๐ฆ Flutter' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Swift์์ CustomStringConvertible ํ๋กํ ์ฝ ํ์ฉํ๊ธฐ (0) | 2024.05.13 |
---|---|
| Combine | 6. Timing Operators (0) | 2024.05.12 |
Flutter Widget์ ์๋์๋ฆฌ (0) | 2024.05.10 |
| Combine | 4. Filtering Operators (0) | 2024.05.09 |
UIView ์ Drawing Cycle (0) | 2024.05.08 |