์์ฃผ ์ฌ์ฉํ๋ ๊ณ ์ฐจํจ์๋ค์ ๋ํด์ ์ดํดํด๋ณด์.map, flatMap๊ณผ ๊ฐ์ ๊ฒฝ์ฐ๋ ์ฌ๋ฌ๊ฐ์ง๊ฐ ์กด์ฌํ๋๋ฐ, ๊ฐ๊ฐ์ ํ์ฉ ๋ฐฉ๋ฒ์ ๋ํด์ ์์๋ณด์.
Documentation ํ์ธ
forEach
-
for-in loop์ ์ ์ฌํ ๋์
-
์ด๋ป๊ฒ์ ์ง์ค๋์ด ์๋ for in๋ฌธ์, ํน์ ์ปฌ๋ ์ ์ ๊ฐ์ ๋ณ๊ฒฝํ ๋ ๋ก์ง์ ๋ณ๊ฒฝํด์ฃผ์ด์ผ ํจ
-
ํ์ง๋ง forEach๋ฅผ ์ฌ์ฉํ๋ฉด ๋์์ ๊ต์ฒดํ์ฌ ์ ์ฉํ ์ ์๋ค๋ ์ ์์ ๋ณด๋ค ๊ฐ๊ฒฐํจ
filter
- filter
- ํน์ ์กฐ๊ฑด์ ์ถฉ์กฑํ๋ element๋ค์ filteringํ๊ธฐ ์ํด ์ฌ์ฉ
reduce
- reduce
- Element๋ค์ ์ด์ฉํ์ฌ ์ต์ข ๊ฒฐ๊ณผ ํ๋๋ฅผ ๋ง๋ค๊ธฐ ์ํด ์ฌ์ฉ
- Summation์์ ์์ฃผ ์ฌ์ฉ
map
- map: Sequence
- map: Optional
- Element๋ฅผ Transform์ ์ด์ฉํ์ฌ ๋ค๋ฅธ Type์ Element๋ก ๋ณํ
- Optional๋ Map Function์ ๊ฐ์ง
- ๊ฐ์ด ์กด์ฌํ ๋ ์คํ
-
์์
-
Optional์ ๊ฐ์ด ์๋ ๊ฒฝ์ฐ map์์ ํจ์๋ฅผ ์คํ
-
tempName
์ด Optional์ธ ๊ฒฝ์ฐ map ๊ตฌ๋ฌธ์ด ์คํ๋์ง ์๊ณ ๊ฒฐ๊ณผ๊ฐ nil์ด๋ค. -
ํ์ง๋ง Optional์ด ์๋๊ณ wansik์ด ๋ค์ด๊ฐ์ ๋, Optional Map์ ๊ฒฝ์ฐ ์๋ context์ wrappingํ์ฌ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ์ฌ Optional์ด ์ค์ฒฉ๋๋ค.
-
๋ง์ฝ wansik์ด ์๋ ๋ค๋ฅธ ๊ฐ์ด ๋ค์ด๊ฐ์ ๋ ์ญ์
Optional(nil)
๋ก ๋ฐํ๋๋ค. -
์ด๋ฌํ ๋ถ๋ถ์ด ์๋นํ ๋ถํธํ๋ค. ์ด๋ฐ ๋ถํธํจ์ flatmap์ ํ์ฉํ์ฌ ํด๊ฒฐ์ด ๊ฐ๋ฅํ๋ค.
-
- ์ฉ์ด
- Context
- Collection, Optional๊ณผ ๊ฐ์ด ์ด๋ค Value๋ฅผ ํฌํจํ๋ ์๋ฃํ
- Value
- Context์์ ๋ค์ด์๋ ์ค์ ๊ฐ
- Transform
- ์ด๋ค Value๋ฅผ ๋ค๋ฅธ Value๋ก ์ฌ์ํ๋ function
- Functor (ํจ์)
- Value๋ฅผ ๊ฐ์ง๋ Context๊ฐ Map function์ ์ด์ฉํ Transform์ ์ง์ํ๋ ๊ฒ
flatMap
-
flatMap
-
Map + Flatten
-
Transform์ ๊ฒฐ๊ณผ๊ฐ Context์ ๋์ผํ Type์ Context๋ผ๋ฉด, ๊ฒฐ๊ณผ๋ Context๊ฐ ์ค์ฒฉํด์ ์กด์ฌํ๊ฒ ๋๋๋ฐ, ์ด๋ฅผ ํ๋๋ก ๋ณํ์ํจ ๊ฒฐ๊ณผ๋ฅผ ๋ง๋ฆ
- Transform์ ๊ฒฐ๊ณผ๊ฐ Optional Int์ธ ๊ฒฝ์ฐ, Context ์ญ์ Optional Int๋ผ๋ฉด, ๊ฒฐ๊ณผ๋ Optional์ด ์ค์ฒฉ๋ ์ํ๊ฐ ๋จ
- ์ด ๋, Flatmap์ ์ฌ์ฉํ๋ฉด flatten๋ ๊ฒฐ๊ณผ๋ฌผ๋ก ๋ง๋ค์ด์ค
-
์ด์ค Collection (์ด์ฐจ์ ๋ฐฐ์ด)์ ๊ฒฝ์ฐ 1์ฐจ์์ผ๋ก ๋ณํํด์ค
-
Dictionary์ ๊ฒฝ์ฐ ๊ฐ Element๋ tuple๋ก ๋ฐ์
- ๊ฒฐ๊ณผ๋
[Sequence.Element]
- ๊ฒฐ๊ณผ๋
-
Optional์ธ ๊ฒฝ์ฐ, ๊ทธ๋ฆฌ๊ณ ๋์์ ์คํจ์ผ ๊ฒฝ์ฐ nil์ ๋ฐํ๋ฐ๊ณ ์ถ์ ๋ ์ฌ์ฉ
- Map์์ ์์๋ฅผ ๋ค์ ๊ฐ์ ธ์์ ์ดํดํด๋ณด๋๋ก ํ๊ฒ ๋ค.
- map๊ณผ ์ฐจ์ด์ ์ ์ดํดํ ์ ์๋ค.
- Optional Value์ธ ๊ฒฝ์ฐ nil์ ๋ฐํํ๋ค. (map๊ณผ ๋์ผํ๊ฒ ๋์)
- Optional Value๊ฐ ์๋ ๊ฒฝ์ฐ, map๊ณผ ๋น์ทํ๊ฒ ๋์ํ๋, transform์ ๊ฒฐ๊ณผ๋ฅผ ํ๋ฒ๋ wrappingํ์ง ์๊ณ flatenํ์ฌ ๋ฐํํ๋ค.
-
๋คํธ์ํฌ ์ฒ๋ฆฌ์์ json์ ๋ฐ๊ณ , ์ด๋ฅผ ํ์ฑํ๋ ๊ฒฝ์ฐ์ ์์ฃผ ์ฌ์ฉํ๋ค.
- ๋ง์ฝ, map์ ์ฌ์ฉํ๋ค๋ฉด json์ ๊ฐ ์ฌ๋ถ๋ ํ์ธํ์ฌ nil๋ก ๋ฐํ๋ฐ์ ์ ์์ง๋ง
- Model ์ด๊ธฐํ ์ฝ๋์ ๊ฒฐ๊ณผ๋ Optional๋ก wrapping๋์ด ๋ฐ๊ธฐ ๋๋ฌธ์ ๋ถํธ
-
์์ธ ์ฒ๋ฆฌ๋ฅผ ๊น๋ํ๊ฒ ํ ์ ์์
-
Monad
- ์ด์ฒ๋ผ value๋ฅผ ๊ฐ์ง๋ Context๊ฐ flatMap function์ ์ด์ฉํ transform์ ์ง์ํ๋ ์๋ฃ๊ตฌ์กฐ๋ฅผ ๋งํจ
- Optional, Collection
compactMap
-
Collection ์์ nil์ ์ ๊ฑฐ
- ๊ฒฐ๊ณผ๊ฐ
[Int]
๋ผ๋ ๊ฒ์ ์ฃผ์
- ๊ฒฐ๊ณผ๊ฐ
-
Swift 4.1์์ ๋ถ๋ฆฌ๋ ์ด์
- ๊ธฐ์กด์๋ array ์์ nil ์ญ์ flatten ํด์คฌ์
- ํ์ง๋ง ํท๊ฐ๋ฆฌ๊ฒ ์ฌ์ฉํ๋ค๋ณด๋ ๊ตฌ๋ถํ ํ์์ฑ์ ๋๋
- flatMap
- 2์ฐจ์ 1์ฐจ์์ผ๋ก
- ๋ด๋ถ ํจ์ ์คํจ ์ฌ๋ถ๋ฅผ wrappingํ๊ณ ์ถ์ง ์์ ๋
- compactMap
- 1์ฐจ์ Collection์ nil์ ์ ์ธํ๊ณ ์ถ์ ๋
compactMapValue
- compactMapValue
- Swift 5์ ๋ค์ด๊ฐ
[T: S?]
์ํฉ์ dictionary์์ value๊ฐ nil์ธ element๋ฅผ ์ ๊ฑฐํ ๋ ์ฌ์ฉ- ๊ฒฐ๊ณผ๋ฌผ์
[T: S]