๋ค์ด๊ฐ๋ฉฐ
Swift๋ ๊ณ์ ์ฑ์ฅ ์ค์ธ ์คํ ์์ค ํจํค์ง ์นดํ๋ก๊ทธ์
๋๋ค.
ย : ์ด ํจํค์ง๋ Swift Collections & Swift Algorithms์ ๊ฐ์ ๋ค๋ฅธ ํจํค์ง๋ค๊ณผ ์ ์ฌํฉ๋๋ค. AsyncSequence ํ๋กํ ์ฝ์ ์ฌ์ฉํด ์๊ฐ์ ๋ฐ๋ผ ๊ฐ์ ์ฒ๋ฆฌํ๋ ์ผ๋ จ์ ์๊ณ ๋ฆฌ์ฆ์ธ๋ฐ์. ๋ณธ๋ก ์ผ๋ก ๋ค์ด๊ฐ๊ธฐ ์ ์ AsyncSequence ํ๋กํ ์ฝ์ ํ ๋ฒ ์๊ธฐํด ๋ด
์๋ค.
AsyncSequence Recap
AsyncSequence ํ๋กํ ์ฝ์ ๋น๋๊ธฐ ์์ฑ๊ฐ์ ๊ธฐ์ ํ ์ ์๊ฒ ํด์ค
ย : Sequence์ ์ ์ฌํ๋ ๋ ๊ฐ์ง ์ฐจ์ด์ ์ด ์์ต๋๋ค. ๋ฐ๋ณต์ ๋ค์ ํจ์(next function form its iterator)๋ Swift ๋์์ฑ์ ์ฌ์ฉํด ๊ฐ์ ์ ๋ฌํ๊ธฐ ๋๋ฌธ์ ๋น๋๊ธฐ ํจ์์
๋๋ค.
โข
Swift์ throw๋ฅผ ํตํด ์ ์ฌ์ ์ธ ์ฅ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค.
โข
Sequence์์์ฒ๋ผ for-await-in ๊ตฌ๋ฌธ์ผ๋ก ์ด๊ฑธ ๋ฐ๋ณตํ ์ ์์ต๋๋ค.
for-await-in syntax
ย ์ฆ, Sequence๋ฅผ ์ฌ์ฉํ ์ค ์๋ฉด AsyncSequence ์ฌ์ฉ์ ์ด๋ ต์ง ์์ต๋๋ค.AsyncSeqence๋ฅผ ๋์
ํ๋ฉด์ Sequence์์ ์ฐพ์๋ณผ ์ ์๋ ๋ชจ๋ ํด์ ๋น๋๊ธฐ ๋ฒ์ ์ผ๋ก ์ถ๊ฐํ์ต๋๋ค.
ย map, filter, reduce๊ณ ๊ธ ์๊ณ ๋ฆฌ์ฆ์ ํตํฉํ๊ณ ๊ฐ๋ ฅํ ๊ฑธ ์ ๊ณตํ๊ณ ์ Clock์ ์ํธ ์ด์ฉ๋์ฃ . Swift ๋์์ฑ์ ๋๋ฆฌ๋ AsyncSequence ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์์ค ํจํค์ง์
๋๋ค.
์๋
Swift Algorithm ํจํค์ง๋ฅผ ์๊ฐํ๊ณ ๊ทธ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ์ฆ๋ช
ํ๊ณ ์ ๋ฉ์์ง ์ฑ์ ๋ง๋ค์์ต๋๋ค.
ย : ์ฐ๋ฆฌ๋ Swift ๋์์ฑ์ ํตํด ์ฑ ๋ง์ด๊ทธ๋ ์ด์
๊ธฐํ๊ฐ ๋ง์ด ์๊ฒผ๋ค๊ณ ํ๋จํ์์ต๋๋ค. ๋น๋๊ธฐ ์๊ณ ๋ฆฌ์ฆ์ ๋ช ๊ฐ์ง ๋ณด์ฌ๋๋ฆฌ๊ธฐ ์ํด ์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ๋ ๊ฒ๋ค๊ณผ ์ด๋ป๊ฒ ์คํ๋๋์ง ๋ณด์ฌ๋๋ฆฌ๋๋ก ํ๊ฒ ์ต๋๋ค.Multi-input algorithms
๋จผ์ , ์ฐ๋ฆฌ์๊ฒ๋ ๋ค์ค ์
๋ ฅ AsyncSequence๋ก ์๋ํ๋ ํน์ ์๊ณ ๋ฆฌ์ฆ๋ค์ด ์์ต๋๋ค. ์ด ์๊ณ ๋ฆฌ์ฆ๋ค์ AsyncSequence๋ฅผ ๋ค์ํ ๋ฐฉ์์ผ๋ก ๊ฒฐํฉํ๋๋ฐ์.
ย : ํ์ง๋ง ํ๋์ ๊ณตํต์ ์ AsyncSequence๊ฐ ๋ค์ค์ผ๋ก ์
๋ ฅ๋์ง๋ง ๋จ์ผ ์ถ๋ ฅ๋๋ค๋ ์ ์
๋๋ค. ์ด ์๊ณ ๋ฆฌ์ฆ์ ๊ฐ ๋ฒ ์ด์ค์์ ๊ฒฐ๊ณผ ํํ์ ์์ฑํ๊ธฐ ์ํด ๋ค์ค ์
๋ ฅ์ ์ทจํ๊ณ ๊ทธ๊ฒ์ ๋ฐ๋ณตํฉ๋๋ค.
โข
์
๋ ฅ๋ฌผ ๊ฐ๊ฐ์ Zip์ด ๊ตฌ์กฐ๋ฅผ ์ด๋ฃจ๊ณ ์๋ ๋ฒ ์ด์ค์
๋๋ค.
โข
๋น๋๊ธฐ Zip ์๊ณ ๋ฆฌ์ฆ์ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ Zip๊ณผ ์ ์ฌํ๊ฒ ์๋ํ๋, ๋์์ ๋ฒ ์ด์ค ๊ฐ๊ฐ์ ๋ฐ๋ณตํ๊ณ ๋ฐ๋ณต ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด ๋ค์ throw ํฉ๋๋ค.
๋ฐ๋ณต๊ณผ ์ค๋ฅ rethrow๋ฅผ ๋์์ ํ๋ ๊ฒ์ ๋ ๋ณต์กํด์ง ์ ์์ต๋๋ค.
ํ์ง๋ง Swift Async Algorithm์ ๋ฉ์์ง ์ฑ์์ ๊ทธ๊ฑธ ๋ชจ๋ ๋ค๋ฃฐ ์ ์์์ฃ .
[Zip ์์]
ํจ์จ์ ์ธ ์ ์ฅ๊ณผ ์ ์ก์ ์ํด ์์์ ๋ค์ํ ํฌ๊ธฐ๋ก ํธ๋์ค์ฝ๋ฉํ๋ฉด์ ๋น๋๊ธฐ ์กฐ์ ํ๋ ์ฝ๋๊ฐ ์ด์ ์๋ ์์๋๋ฐ์.
ย Zip์ ํตํด ํธ๋์ค์ฝ๋ฉ ์์์ ๋ค๋ฅธ ์๋ฒ๋ก ์ ์กํ ๋ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ์์ฑํ ์ ์๊ฒ ๋์์ต๋๋ค.
ย Zip์ ๋๊ธฐ์ฑ์ด๋ผ ํธ๋์ค์ฝ๋ฉ์ด๋ ๋ฏธ๋ฆฌ ๋ณด๊ธฐ๊ฐ ๋ ๋ค ์ง์ฐ๋์ง ์์ต๋๋ค.
ย : ํ์ง๋ง ์ฌ๊ธฐ์ ๋์ด ์๋๋๋ค.โข
Zip ์์ฒด๊ฐ ์ด๋ค ์ชฝ์์ ๋จผ์ ๊ฐ์ ์์ฑํ๋์ง ๋ ์ ํธํ๋ ๊ฒ์ด ์๊ธฐ ๋๋ฌธ์ ์์์ด๋ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ๋ ์ค ์๋ฌด๊ฑฐ๋ ๋จผ์ ์์ฑ๋๊ณ ์ด๋ ์ชฝ์ด๋ ๊ฐ์ ๋ค๋ฅธ ์ชฝ์ด ํํ์ ์๋ฃํ ๋๊น์ง ๊ธฐ๋ค๋ฆด ๊ฒ๋๋ค.
โข
Zip์ ํํ์ ๊ตฌ์ถํ๊ธฐ ์ํด ์๋ก๋ฅผ ๊ธฐ๋ค๋ฆด ์ ์๊ธฐ ๋๋ฌธ์ ํจ๊ป ์
๋ก๋๋ ์ ์๋๋ก ์ง์ ๊ธฐ๋ค๋ฆด ์ ์์ต๋๋ค.
์ฐ๋ฆฌ๋ ์
๋ ฅ ๋ฉ์์ง๋ฅผ AsyncSequence๋ก ๋ชจ๋ธ๋งํ๋ ๊ฒ์ด ๊ฝค ํ๋นํ ๊ฒ์ด๋ผ๋ ๊ฒฐ๋ก ์ ๋ด๋ ธ์ต๋๋ค.
AsyncSequence๋ ๋ช
๋ น์ ๋ณด์กดํ์ฌ ์ฝ๋ฐฑ์ ๋ฉ์์ง ๋น๋๊ธฐ ์ํ์ค๋ก ๋ฐ๊ฟ ์ ์๊ธฐ ๋๋ฌธ์ ๋ฉ์์ง ์ฒ๋ฆฌ์ ๋น๋๊ธฐ ์คํธ๋ฆผ์ ์ฌ์ฉํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค.
ย : ์ฐ๋ฆฌ๊ฐ ์ฒ๋ฆฌํด์ผ ํ ๋ถ๋ถ ์ค ํ๋๋ ๋ค์ํ ๊ณ์ ์ ์ง์ํด์ผ ํ๋ค๋ ์ ์ด์์ต๋๋ค.๊ฐ ๊ณ์ ์์ ์
๋ ฅ ๋ฉ์์ง์ AsyncSequence๋ฅผ ๋ง๋ค์์ผ๋ ๋ง์ ๊ตฌํํ๋ ค๊ณ ํ๋ ํ๋์ AsyncSequence๋ก ์ฒ๋ฆฌํด์ผ ํ๊ฑฐ๋ ์.
ย ์ฆ, AsyncSequence ๋ณํฉ ์๊ณ ๋ฆฌ์ฆ์ด ํ์ํ์ต๋๋ค.Merge ์๊ณ ๋ฆฌ์ฆ์ด ๊ฐ์ถฐ์ ธ ์๋๋ฐ์.
โข
์ด ์๊ณ ๋ฆฌ์ฆ์ ๋ค์ค AsyncSequence๋ฅผ ๋์์ ๋ฐ๋ณตํ๋ค๋ ์ ์์ Zip๊ณผ ๋น์ทํ๊ฒ ์๋ํฉ๋๋ค.
โข
ํ์ง๋ง ๋ค๋ฅธ ์ ์ด ์๋ค๋ฉด,
โฆ
์ง์ ์ด๋ฃจ๋ ํํ ๋์ ๋ฒ ์ด์ค๊ฐ ๋์ผ ์์ ํ์
์ ๊ณต์ ํด์ผ ํฉ๋๋ค.
โฆ
๋ฒ ์ด์ค AsyncSequence๋ฅผ ํด๋น ์์์ ํน์ด AsyncSequence ํ๋์ ๋ณํฉํฉ๋๋ค.
[Merge ์์]
๋ณํฉ ์๊ณ ๋ฆฌ์ฆ์ ๋ฐ๋ณต ์ ํ ์ชฝ ๊ณ์ ์์ ๋จผ์ ์์ฑ๋ ์์๋ฅผ ์ทจํฉ๋๋ค. ๋ชจ๋ ๋ฒ ์ด์ค AsyncSequence๊ฐ ๋ฐ๋ณต์์์ ์๋ฌด๊ฒ๋ ๋์ถํ์ง ์์ ๋๊น์ง ๋ฐ๋ณต์ ๊ณ์ ๋ฉ๋๋ค. ๋ฒ ์ด์ค์์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค๋ฉด ๋ค๋ฅธ ๋ฐ๋ณต์ ์ทจ์๋ฉ๋๋ค. ์ด๋ฅผ ํตํด ๋ฉ์์ง๋ฅผ AsyncSequence๋ฅผ ์ทจํ๊ณ ๋ณํฉํ ์ ์์ฃ . ์ด Merge ์๊ณ ๋ฆฌ์ฆ์ ๊ฐ ์์ฑ ์ ๋์์ ์๋ํ์ง๋ง ๊ฐํน ์๊ฐ๊ณผ ์ํธ ์์ฉํ๋ ๊ฒ ์ ์ฉํ ๋๊ฐ ์์ต๋๋ค.
Clock, instant, duration
์ด๋ฒ ํจํค์ง๋ ํน์ ์๊ณ ๋ฆฌ์ฆ์ ๋์
ํด Swift ๋ด ์๋ก์ด Clock API๋ฅผ ์ด์ฉํจ์ผ๋ก์จ ์๊ฐ๊ณผ ์๋ํฉ๋๋ค. ์๊ฐ ๊ทธ ์์ฒด๋ ๊ต์ฅํ ๋ณต์กํ ์ฃผ์ ๋ก Swift 5.7์ clock, instant, duration ํ์
์ ์๊ฐ์ ์์ ํ๊ณ ์ผ๊ด๋๊ฒ ํ๋ ์ผ๋ จ์ API์
๋๋ค.
Clock ํ๋กํ ์ฝ์ 2๊ฐ์ ํ๋ฆฌ๋ฏธํฐ๋ธ๋ฅผ ์ ์ํฉ๋๋ค.
ย : ์ฃผ์ด์ง ์๊ฐ ์ดํ ์ผ์ด๋๋ ๋ฐฉ๋ฒ๊ณผ ์ง๊ธ์ด๋ผ๋ ๊ฐ๋
์ ์์ฑํ๋ ๋ฐฉ๋ฒ์์.Clock์๋ ์ฌ๋ฌ ๊ฐ์ง ๊ตฌ์กฐ๊ฐ ๋ค์ด๊ฐ ์๋๋ฐ ํํ ์ฐ์ด๋ ๊ตฌ์กฐ ์ค ๋ ๊ฐ์ง๋ ๋ฐ๋ก continuous clock๊ณผ Suspending Clock์
๋๋ค.
continuous clock
์คํฑ์์น์ฒ๋ผ ์๊ฐ ์ธก์ ์ ์ฌ์ฉ ๊ฐ๋ฅํ๋ฉฐ ์ฌ๋ฌผ ์ํ ์ธก์ ์ฌ๋ถ์๋ ์๊ด์์ด ์๊ฐ์ ํ๋ฌ ๊ฐ๋๋ค.
suspending clock
๋จธ์ ์ด ์ ์งํ๋ฉด ๋ฉ์ถ์ฃ .
์ฐ๋ฆฌ๋ ๋ฐ๋๋ผ์ธ ์ดํ ๊ฒฝ๊ณ ๋ฅผ ๋ฌด์ํ ์ ์๋๋ก ์ฑ์์ ์๋ก์ด ์๊ณ API๋ฅผ ์ฌ์ฉํ์๋๋ฐ์.
์ง์ฐํ๊ณ ์ ํ๋ ์ด๋ฅผ ๊ตฌ์ฒด์ ์ผ๋ก ๊ฐ๋ฆฌํค๋ duration ๊ฐ์ ์ถ๊ฐํด ๋ฐ๋๋ผ์ธ์ ๋ง๋ค ์ ์์์ต๋๋ค.
์๋ ์คํ ๊ฒฝ๊ณผ ์๊ฐ์ ์ธก์ ํ๋ ๋ฐฉ๋ฒ๋ ์๊ตฌ์.
ย : ์๋์์๋ ์ ์ฌ์ ์์
๊ฒฝ๊ณผ ์๊ฐ์ ์ธก์ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฌ์ค๋๋ค.[์ธก์ ๊ฒฐ๊ณผ ์์]
์ด ๋ ์๊ณ์ ์ฃผ์ ์ฐจ์ด์ ์ ๋จธ์ ์ด ์ ์งํ์ ๋์ ๋ฐ์์์ ๋ํ๋๋๋ฐ์.
ย ์คํ์ ์ฌ๊ฐํ๋ฉด ๋จธ์ ์ด ์ ์ง๋์ด ์๋ ๋์ continuous clock์ ๊ณ์ ์๋ํ์ง๋ง suspending clock์ ๊ทธ๋ ์ง ์์ต๋๋ค.๋ณดํต ์ด ์ฐจ์ด๋ ์ฃผ์ ํน์ง์ด ์คํ ์๊ฐ์ ์ค๋จํจ์ผ๋ก์จ ์ ๋๋ฉ์ด์
๊ณผ ๊ฐ์ ๊ฒ๋ค์ ์์ํ๋๋ก ์๋ํ๊ฒ ํ๋ ์ฃผ์ ์ธ๋ถ ์ฌํญ์ด ๋ ์ ์์ต๋๋ค.
ย ๋ง์ฝ ์ ๋๋ฉ์ด์
์ฒ๋ผ ๋จธ์ ์ด ์๊ฐ๊ณผ ์ํธ ์์ฉํด์ผ ํ๋ค๋ฉด Suspending clock๋ฅผ ์ฌ์ฉํ์ธ์.
ย ์ฌ๋๊ณผ ๊ด๋ จ๋ ํ
์คํฌ๋ฅผ ์ธก์ ํ๋ ๊ฒ์ด๋ผ๋ฉด continuous clock์ด ์ ํฉํฉ๋๋ค.
ย ์ฆ, ์ ๋์ ์ง์ ๊ตฌ๊ฐ์ ๋ฐ๋ผ ์ง์ฐ์์ผ์ผ ํ๋ ์ธ๊ฐ๊ณผ ๊ด๋ จ๋ ์ผ์์๋ ํ์๋ฅผ ์ฌ์ฉํ์ธ์. Algorithms using time
์ ํ ํจํค์ง์์๋ ์๊ฐ๊ณผ ๊ด๋ จํ์ฌ ์ด๋ฒคํธ๊ฐ ์ ๊ฐ๋๋ ๊ฐ๋
๋ค์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ด ํ์
๋ค์ ์ฌ์ฉํฉ๋๋ค.
ย : ์ฐ๋ฆฌ๋ ๋ฉ์์ง ์ฑ์ ํตํด ์ด๋ฒคํธ๋ฅผ ์ ํํ ํต์ ํ๊ธฐ ์ํด ์ด ํ์
๋ค์ด ๊ต์ฅํ ๋์๋๋ค๋ ์ฌ์ค์ ๋ฐ๊ฒฌํ์ต๋๋ค. ์ํธ ์์ฉ ์ ํ ์๊ฐ์ ์ธก์ ํด ๋ฉ์์ง๋ฅผ ํจ๊ณผ์ ์ผ๋ก ๋ฒํผ๋งํ์ฃ .์ฐ๋ฆฌ๊ฐ ๊ฐ์ฅ ์๊ฐ์ ๋ง์ด ํ์ฉํ๋ ๋ถ์ผ๋ ๋ฉ์์ง ๊ฒ์ ์
๋๋ค.
์ฐ๋ฆฌ๋ ๊ฒฐ๊ณผ ์ฑ๋์ ๊ด๋ฆฌํ๋ ์ปจํธ๋กค๋ฌ๋ฅผ ๋ง๋ค์์ฃ . ์ด ์ฑ๋์ ๊ฒ์ ํ
์คํฌ์์ UI๋ก ๊ฒ์ ๊ฒฐ๊ณผ๋ฅผ ๋ชจ์๋๋ค. ๊ฒ์ ํ
์คํฌ ์์ฒด์๋ ์๊ฐ๊ณผ ๊ด๋ จ๋ ๊ตฌ์ฒด์ ์ธ ํน์ฑ์ด ํ์ํ์ฃ .
ย : ์๋ฒ์์ ๋ฐ์ก๋ ๋ฉ์์ง ๊ฒ์ ์ ํ ์๊ฐ์ ์ธก์ ํ๋ ค ํ์ต๋๋ค. Debounce ์๊ณ ๋ฆฌ์ฆ์ ๋ฐ๋ณต ์ ๋ค์ ๊ฐ์ ๋ด๊ธฐ ์ ์ ์ง ๊ธฐ๊ฐ์ ๋๊ธฐํฉ๋๋ค.
ย : ์ด๋ฒคํธ๊ฐ ๋นจ๋ฆฌ ์ฌ ์๋ ์์ง๋ง ๊ฐ์ ์ฒ๋ฆฌํ๊ธฐ ์ ์ ์ ์ง ๊ธฐ๊ฐ ๋์ ๋๊ธฐํ๊ณ ์ ํ๋ค๋ ๊ฑฐ์ฃ . ๊ฒ์ ํ๋์ ์ ์ ์
๋ ฅ์ด ๋น ๋ฅด๊ฒ ๋ฐ๋ ๋ ์ฐ๋ฆฌ๋ ๊ฒ์ ์ปจํธ๋กค๋ฌ๊ฐ ๊ฐ ๋ณํ์ ๊ฒ์ ์์ฒญ์ ๊ธํ๊ฒ ํ๊ธธ ์์น ์์ต๋๋ค. ๋์ ์ ํน์ ํ์ดํ์ด ์๋ฃ๋๋ ค๊ณ ํ ๋๊น์ง์ ์ ์ง ๊ธฐ๊ฐ ๋์ ๋๊ธฐํ๊ธธ ์ํ๋ ๊ฑฐ์ฃ .
Debounce ์๊ณ ๋ฆฌ์ฆ์ ๊ธฐ๋ณธ์ ์ผ๋ก Continuous Clock์ ์ฌ์ฉํ ๊ฒ๋๋ค.
ย ์ด ๊ฒฝ์ฐ ์๋ฌด ์ผ์ด ์ผ์ด๋์ง ์๋ ํน์ ๊ธฐ๊ฐ๋์ ๋๊ธฐํ๊ฒ ํ ์ ์๊ณ ์
๋ ฅ์ debouncingํ ์ ์์ต๋๋ค.
ย : ์๊ฐ๊ณผ ์ง์ ๊ธฐ๊ฐ์ debounce๋ฟ๋ง ์๋๋ผ ๋ค๋ฅธ ์๊ณ ๋ฆฌ์ฆ์์๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
ย : ์ฐ๋ฆฌ๊ฐ ์ ๋ง ์ ์ฉํ๋ค๊ณ ๋ฐ๊ฒฌํ ๋ถ์ผ๋ ๋ฐ๋ก ๋๋์ ๋ฉ์์ง๋ฅผ ์๋ฒ๋ก ์ ์กํ๋ ๊ฒ์ด์์ต๋๋ค.Swift ์๊ณ ๋ฆฌ์ฆ ํจํค์ง์๋ ๊ฐ์ ๋๋๋ ์ผ๋ จ์ ์๊ณ ๋ฆฌ์ฆ์ด ์๋๋ฐ์. Swift Async Algorithm ํจํค์ง์์๋ ์ด๋ค์ ์ ๊ณตํฉ๋๋ค. ๋ค์ํ Clock ๋ฐ duration๊ณผ ์ํธ ์ด์ฉํ๋ ๋ฒ์ ๋ค๋ ์ถ๊ฐ๋์์์ ๋ฌผ๋ก ์ด๊ณ ์.
ํน์ Chunk ์๊ณ ๋ฆฌ์ฆ๋ค์ ํตํด ์นด์ดํธ, ์๊ฐ, ์ฝํ
์ธ ์ ๋ฐ๋ผ ํต์ ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
*๋ง์ฝ ์ฌ๊ธฐ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด ๋ค์ throwํ๊ธฐ ๋๋ฌธ์ ์ค๋ฅ์ ๊ดํด์๋ ์์ ํ ์ฝ๋์
๋๋ค.
[Chunk ์์]
์ฐ๋ฆฌ๋ ๋ฉ์์ง ์ฒญํฌ๊ฐ ํน์ ๊ฒฝ๊ณผ ์๊ฐ๋ง๋ค ์ง๋ ฌํ๋์ด ์ ์ก๋ ์ ์๋๋ก chunked(by:) API๋ฅผ ์ฌ์ฉํ์ต๋๋ค.
์ด ๋ฐฉ์์ผ๋ก ํด๋ผ์ด์ธํธ๊ฐ ๋ณด๋ธ ํจ์จ์ ์ธ ํจํค์ง๋ฅผ ๋ฐ์์ฃ . ๋๋ ๋ฉ์์ง๋ฅผ 50๋ฐ๋ฆฌ์ด๋ง๋ค ์
๋ ฅํ ๋๋ ์ด API๋ฅผ ์ฌ์ฉํ ์ ์์์ต๋๋ค.
ย : ๋๊ตฐ๊ฐ ์ ๋์ ๋๋ฌด๋ ๋น ๋ฅด๊ฒ ์
๋ ฅํ ๋๋ ์๋ฒ์ ์ ์ก๋ ์์ฒญ์ด ๋๋์ด์ก์ฃ !!Collections
์ปฌ๋ ์
์ด๋ ์ํ์ค๋ก ์์
ํ ๋๋ ์์๋ฅผ ๊ฒ์ผ๋ฅด๊ฒ(lazy) ์ฒ๋ฆฌํ๋ ๊ฒ ์ ์ฉํ๋ฉฐ ์ ์๋ํฉ๋๋ค.
AsyncSequence๋ Swift ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ด๋ฐ ์๋ ๋ฐฉ์๊ณผ ์ ์ฌํ๊ฒ ์๋ํ์ฃ . ํ์ง๋ง lazy ์๊ณ ๋ฆฌ์ฆ์ฒ๋ผ ์ข
์ข
์ปฌ๋ ์
์ธ๊ณ๋ก ๋์๊ฐ์ผ ํ ๋๊ฐ ์์ต๋๋ค.
์ ๊ท ํจํค์ง๋ AsyncSequence๋ก ์ปฌ๋ ์
์ ๊ตฌ์ถํ๊ธฐ ์ํ ์ผ๋ จ์ ์ด๋์
๋ผ์ด์ ๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ด๋ค์ ํตํด ์ ํํ๋ค๊ณ ์๋ ค์ง AsyncSequence๋ฅผ ์
๋ ฅํ์ฌ Dictionary, Set, Array๋ฅผ ๊ตฌ์ถํ ์ ์์ต๋๋ค.
ย : ์ปฌ๋ ์
์ด๋์
๋ผ์ด์ ๋ ๋ฐ๋ก ๋ฉ์์ง ์ด๊ธฐํ๋ก ๋ณํ๋๊ณ ๋ฐ์ดํฐ ํ์
์ ๋ฐฐ์ด๋ก ์ ์งํ ์ ์๊ฒ ํด์ค๋๋ค. Swift ๋๊ธฐ์ฑ ์ฌ์ฉ์ ์ํด ์ต์ ์ ๋ณด๋ฅผ ์ฌ์ฉํ ์ ์๋ ํน์์ด ๋ค์ํ๊ธฐ ๋๋ฌธ์ ๊ต์ฅํ ๋์์ด ๋์์ต๋๋ค.
ย ๊ธฐ์กด ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ ์งํจ์ผ๋ก์จ ์ฑ์ ์ผ๋ถ๋ฅผ ์ ์ฐจ ํ๋นํ ๊ณณ์ผ๋ก ๋ง์ด๊ทธ๋ ์ด์
ํ ์ ์์์ต๋๋ค. ์ง๊ธ๊น์ง Swift Async Algorithm ํจํค์ง์ ํ์ด๋ผ์ดํธ ์ค ๊ทน์์๋ง ๋ณด์ฌ๋๋ ธ๋๋ฐ์.
์ค๋ ๋ณธ ๊ฒ๋ณด๋ค ํจ์ฌ ๋ ๋ง์ ์๊ณ ๋ฆฌ์ฆ์ด ์์ต๋๋ค.
ย : ๋ค์ค AsyncSequence๋ฅผ ๊ฒฐํฉํ๋ ๊ฒ๋ถํฐ
ย : ์๊ฐ์ ๋ฐ๋ฅธ ์ ํ์ ์ธก์ ํ๊ณ
ย : ๊ฐ์ ๋๋๋ ์๊ณ ๋ฆฌ์ฆ
ย : ๋ฒํผ๋งํ๊ณ
ย : reduce ์๊ณ ๋ฆฌ์ฆ, join ์๊ณ ๋ฆฌ์ฆ๋ถํฐ injection ์๊ณ ๋ฆฌ์ฆ๊น์ง ๋์ฑ ๋ค์ํฉ๋๋ค. Swift Async Algorithms ํจํค์ง๋ ์๊ฐ์ ๋ฐ๋ผ ์ฒ๋ฆฌํ ์ ์๋๋ก ์๊ณ ๋ฆฌ์ฆ ์งํฉ์ ์ฌ์ฉํ๊ณ ์ด๋ฅผ ์ฑ์ ๋์์ด ๋ ์ ์๋ ๊ด๋ฒ์ํ ๊ณ ๊ธ ๊ธฐ๋ฅ์ผ๋ก ํ๋ํฉ๋๋ค.
ย : ํ ๋ฒ ์จ๋ณด์ธ์!! ์ด ํจํค์ง๋ก ์ฌ๋ฌ๋ถ๋ค์ด ๋ฌด์์ ํ๋ ค ํ์ค์ง ๊ธฐ๋๋ฉ๋๋ค! ๊ทธ๋ฆฌ๊ณ ๊ทธ๋ฐ ์ด์ ์ ๊ณต์ ๊ฐ ๋๋๊ฑฐ์ฃ . ์ด ํจํค์ง๋ ์ฌ๋ฌ๋ถ๊ณผ ํจ๊ป ๊ฐ๋ฐํ๋ ๊ฒ์
๋๋ค.


























