lazy property๋ฅผ ์ฌ์ฉํด๋ณธ ๊ฒฝํ์ด ์๋ค. ํด๋น ์์ด๋์ด๋ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ ์ฃผ๋ก ์ฌ์ฉํ๋ค. ์ด๋ฒ์๋ ์ง์ฐ ๊ณ์ฐ๋ฒ์ด ๋ฌด์์ธ์ง, ๊ทธ๋ฆฌ๊ณ Lazy์ unfold sequence์ ๋ํด ์์๋ณธ๋ค.
Lazy Evaluation
- Lazy Evalutation
- ํํ์ ํ๊ฐ๋ฅผ ์ต๋ํ ๋ฆ์ถค
- Lazy Property
- ๊ฐ์ ์ฌ์ฉํ๊ธฐ์ ์๋ ์์ฑํ๊ณ ์์ง ์๋ค๊ฐ ์ ๊ทผํ๋ ์๊ฐ ์์ฑ
- Lazy Collection
- Element๋ค์ ํ๊บผ๋ฒ์ ๋ฏธ๋ฆฌ ์ฐ์ฐํ์ง ์๊ณ ํ์์ ๋ฐ๋ผ ํ๋์ฉ ์ฒ๋ฆฌ
- Collection ๋ด๋ถ ๊ฐ์๊ฐ 10๋ง๊ฐ
- map์ ํตํด transform์ ํ๋ ๊ฒฝ์ฐ
- ๋ง์ฝ 3๋ฒ์ด๋ฉด 30๋ง๋ฒ์ ์ฐ์ฐ
- ๋งค์ฐ ํฐ ๋น์ฉ
- ์ ๋ถ๋ฅผ ์ฌ์ฉํ๋ค๋ฉด ๋ชฐ๋ผ๋ ์ผ๋ถ๋ง ์ฌ์ฉํ๋ค๋ฉด ๋นํจ์จ์
- ์ฅ์
- ์๊ฐ์ด ๋ง์ด ๊ฑธ๋ฆฌ๋ ์ฐ์ฐ์ ํ์ํ ๋๊น์ง ๋ฏธ๋ฃธ
- ๋ฌดํ Collection์ ๋ง๋ค ์ ์์
- 0, 1์ด ๋ฌดํ์ด ๋ฐ๋ณต๋๋ Collection
- map, flatMap, filter๋ฑ๋ lazyํ๊ฒ ์ฒ๋ฆฌํด์ ํจ์จ ๋์ code๋ฅผ ๋ง๋ค ์ ์์
Lazy
-
Lazy Property
-
LazySequence
- line 2๋ฒ์์ ์ค์ ๊ณ์ฐํ์ง ์์
- 3๋ฒ line์์ 0, 4๋ง transformํ์ฌ ์ฌ์ฉ๋จ
- RandomAccessCollection
- LazyCollectionProtocol
- LazySequenceProtocol
- Sequence
- ์ฆ, Sequence์ ๋ชจ๋ ํจ์๋ฅผ ์ฌ์ฉ๊ฐ๋ฅ
- ๋์๋ง lazyํ๊ฒ
- LazySequenceProtocol
- LazyCollectionProtocol
- map, flatMap, filter๋ ๊ฐ ์ ๊ทผ ์ ๊น์ง ๋์ํ์ง ์์
- ์์ฌ์ด ์
- lazy Property๊ฐ RandomAccessCollection์ ์กด์ฌํ๊ธฐ ๋๋ฌธ์, ์ ์ด๋ ํ๋ฒ์ Collection์ ๋ง๋ค๊ณ
.lazy
๋ก ์ ๊ทผํด์ผ ํจ - ํผ๋ณด๋์น ์์ด ๊ฐ์ด ์ด๊ธฐ๊ฐ์ ํ์๋ก ํ๋ Sequence๋ฅผ ๊ตฌํํ๊ธฐ ์ด๋ ค์
- ๋ฌดํ Collection์ ๊ตฌํํ ์ ์์
- lazy Property๊ฐ RandomAccessCollection์ ์กด์ฌํ๊ธฐ ๋๋ฌธ์, ์ ์ด๋ ํ๋ฒ์ Collection์ ๋ง๋ค๊ณ
UnfoldSequence
- Swift-Evolution 0094
- ์ด๋ค ๊ฐ๋ณ ์ํ์ ๋ฐ๋ผ Closure๋ฅผ ๋ฐ๋ณต์ ์ผ๋ก ์ ์ฉํด์ element๋ค์ด ๋ง๋ค์ด์ง๋ sequence
- ๊ฐ element๋ lazyํ๊ฒ ๊ณ์ฐ๋๋ฉฐ ๋ฌดํ์ ๊ธธ์ด๋ฅผ ๊ฐ์ง ์ ์์
- ์ฌ์ฉ๋ฐฉ๋ฒ
-
๋ฌดํ Sequence
- ๋ง์ฝ prefix๋ก ์ ํ์ ๊ฑธ์ง ์์ผ๋ฉด for๋ ๋ฌดํ๋ฃจํ๊ฐ ๋จ
dropFirst(n)
๋ ์์ n๊ฐ๋ฅผ ๋ฒ๋ฆฌ๋ ํจ์
-
ํผ๋ณด๋์น ์์ด
- prefix ๊ฑธ์ง์์ผ๋ฉด overflow
inout
์ ์ฌ์ฉํ์ฌ pair์์ ๊ฐ์ ๊ณ์ํด์ ๋ฐ๊ฟ
-