<TIL>
์ค๋์ ์ฌํ ๊ฐ์๋ฅผ ๋ค ๋ค์๋๋ฐ, ์ญ์๋ ๋ฉ๋ถ..๐คฏ
ํ
์ด๋ ค์์ง ๋๋..?
๊ทธ๋๋ ์ด์ ์ดํด ์ ๋ ํด๋ก์ ๊ฐ ์ค๋์ ๊ท์ ์ข ๋ค์ด์์ ๋คํ์ด์๋ค.
์ญ์ ๋ฌด์ง์ฑ์ผ๋ก ๊ณ์ ๋ณด๋ฉด ์ข ๋์์ง๋ ๊ฒ ๊ฐ์..ใ
ใ
ใ
์๋ฌดํผ ์ ๋ถ ์ ๋ฆฌํ๋ ค๋ฉด ๋๋ฌด ๋ง๊ธฐ๋ ํ๊ณ , ์์ง ์ดํด ์ ๋ ๋ถ๋ถ๋ค๋ ์์ด์
์ด๋ฒ TIL ๊ฒ์๊ธ์๋
ํด๋ก์ ์ ๊ณ ์ฐจ ํจ์๋ฅผ ์ ๋ฆฌํด ๋ณด๋ ค๊ณ ํ๋ค!
๋ด์ผ๋ถํฐ๋ ๊ฐ์ธ๊ณผ์ '์ผ๊ตฌ ๊ฒ์ ๋ง๋ค๊ธฐ' ์์ํด์ผ ํด์
์ ์ ์์ ์์ ์ด๋ค..^^..
ํด๋ก์
(Closure)
ํด๋ก์ ๋ ์ด๋ฆ์๋ ํจ์(์ต๋ช
ํจ์)
์ฆ, ์ฝ๋ ๋ธ๋ก์ ๋งํ๋ค.
๊ทธ์น๋ง, ์ง๊ธ๊น์ง ๊ณ์ ์ฌ์ฉํด์๋
func ํค์๋๋ฅผ ํตํด ์ด๋ฆ์ ๋ถ์ฌ์ค ํจ์๋ค๋ ๋ชจ๋ ํด๋ก์ ์ด๋ค!
์ด์ฒ๋ผ ํด๋ก์ (Closure)๋ ๋ ๊ฐ์ง ์ข
๋ฅ๊ฐ ์๋ค.
โ Named Closure
โก Unnamed Closure
๋ฐฉ๊ธ ์์์ ๋งํ func ํค์๋๋ฅผ ํตํด ์ด๋ฆ์ ๋ถ์ธ ํจ์๋ค์ด
๋ฐ๋ก 'Named Closure'์ด๋ค.
๊ทธ์น๋ง ํด๋ก์ ๋ผ ๋ถ๋ฅด์ง ์๊ณ , ๊ทธ๋ฅ ํจ์๋ผ ๋ถ๋ฅด๋ ๊ฒ์ผ ๋ฟ์ด๋ค!
๊ทธ๋ฆฌ๊ณ ์์ผ๋ก ์ ๋ฆฌํ ์ด๋ฆ์ ๋ถ์ด์ง ์๊ณ ์ฌ์ฉํ๋ ํจ์
'Unnamed Closure'
(๋ณดํต ๊ทธ๋ฅ ํด๋ก์ (Closure)๋ผ๊ณ ๋ถ๋ฆ)
์ด ํจ์๋ฅผ ์ ๋ฆฌํ๋ ค๊ณ ํ๋ค.๐ฒ
ํด๋ก์ ๋ ์์๋ ๋ณ์์ ์ฐธ์กฐ๋ฅผ ์บก์ณ(capture)ํ์ฌ ์ ์ฅํ๊ณ ,
์ด๋ฅผ ๋์ค์ ์ฌ์ฉํ ์ ์๋๋ก ํ๋ค.
โ ๊ฐ(value) ์บก์ณ
- ๊ฐ ํ์
์ ์บก์ณํ๋ ์ฐธ์กฐ ํ์
์ ์บก์ณํ๋ ์ฐธ์กฐ(reference) ์บก์ณ๊ฐ ๋จ
โก ์ฐธ์กฐ(reference) ์บก์ณ
- ๋ณ์ or ์์์ ์ฐธ์กฐ๋ฅผ ์บก์ณ
- ํด๋ก์ ๋ด์์ ํด๋น ๋ณ์๋ ์์๋ฅผ ๋ณ๊ฒฝํ๋ฉด ์๋ณธ ๊ฐ๋ ๋ณ๊ฒฝ๋จ
โท ํด๋ก์ ๋ฅผ ์ฌ์ฉํ๋ ์ด์ โ
- ๊ธฐ๋ฅ์ ์ ์ฅํ๊ธฐ ์ํด์ ์ฌ์ฉํ๋ค.
- ๋น๋๊ธฐ ์ฒ๋ฆฌ๊ฐ ํ์ํ ๋ ์ฌ์ฉํ ์ ์๋ ์ฝ๋ ๋ธ๋ก์ด๋ค.
(๋ฐ๋์ ๋น๋๊ธฐ์๋ง ์ฌ์ฉํ๋ ๊ฒ์ ์๋)
โท ํด๋ก์ ์์ ๋งค๊ฐ๋ณ์ ์ฌ์ฉ โ
- ํด๋ก์ ๋ฅผ ๋ง๋ค ๋, ์ด๋ฆ์ด๋ ๊ณต๋ฐฑ์ด ์๋ค.
- ํด๋ก์ ์์ ๋งค๊ฐ๋ณ์๋ { } ์์ ๋์ดํ๋ค.
- ํด๋ก์ ๊ฐ ๋งค๊ฐ๋ณ์๋ฅผ ๋ฐ์๋ค์ด๊ฒ ํ๋ ค๋ฉด { } ๋ฐ๋ก ๋ค ( ) ์์ ๋์ดํ ๋ค์์
in ์ ์์ฑํ์ฌ ํด๋ก์ ๊ฐ ์์ํ๋ค๋ ๊ฒ์ ์ ์ ์๋๋ก ํ๋ค.
- ํจ์์ ํด๋ก์ ์ ์ฐจ์ด๋ ํด๋ก์ ๋ฅผ ์คํํ ๋
๋ณ์๋ ์ด๋ธ์ ์ฌ์ฉํ์ง ์๋๋ค๋ ์ ์ด๋ค.
<์์ 1>
<์์ 2>
<์ต์ ํํ๋ ๋ฐฉ๋ฒ>
<ํ์ฉ>
ํ์ถ ํด๋ก์
(Escaping Closure)
โ ํจ์ ๋ด๋ถ์ ์กด์ฌํ๋ ํด๋ก์ (ํจ์)๋ฅผ ์ธ๋ถ ๋ณ์์ ์ ์ฅํ๋ ๊ฒฝ์ฐ
โก ํด๋ก์ ๊ฐ ๋ฉ์๋์ ์ธ์๋ก ์ ๋ฌ๋์ ๋,
๋ฉ์๋์ ์คํ์ด ์ข
๋ฃ๋ ํ ์คํ๋๋ ํด๋ก์ ์. (๋น๋๊ธฐ)
โข ํ๋ผ๋ฏธํฐ ํ์
์์ @escaping ์ด๋ผ๋ ํค์๋๋ฅผ ๋ช
์ํด์ผํจ.
๐ก
@escaping์ ์ฌ์ฉํ๋ ํด๋ก์ ์์ self์ ์์๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ์๋
self๋ฅผ ๋ช
์์ ์ผ๋ก ์ธ๊ธํด ์ฃผ์ด์ผ ํ๋ค.
๊ณ ์ฐจํจ์
(map, filter, reduce)
โ map โ
โ๏ธ map์ ๋ฐ์ดํฐ๋ฅผ ๋ณํํ๊ณ ์ ํ ๋ ์ฌ์ฉํ๋ค.
โ๏ธ๊ธฐ์กด ๋ฐ์ดํฐ๋ฅผ ๋ณํํ์ฌ ์๋ก์ด ์ปจํ
์ด๋๋ฅผ ์์ฑํ๋๋ฐ, ๊ธฐ์กด ๋ฐ์ดํฐ๋ ๋ณํ๋์ง ์๋๋ค.
map์ ๊ธฐ์กด์ for-in ๊ตฌ๋ฌธ๊ณผ ๋น๊ตํ์ ๋, ์๋์ ๊ฐ์ ์ด์ ์ด ์๋ค.
โ ์ฝ๋๊ฐ ๊ฐ๊ฒฐํ๋ค.
โก ์ฌ์ฌ์ฉ์ ์ฉ์ดํ๋ค.
โข ์ปดํ์ผ๋ฌ ์ต์ ํ ์ฑ๋ฅ์ด ์ข๋ค.
์ด๋ ๊ฒ ์ฝ๋๊ฐ ๋ ๊ฐ๊ฒฐํด ์ง ์ ์๋ค.
์ง๊ธ์ ์งง์ ์ฝ๋๋ผ ํฐ ์ฐจ์ด๊ฐ ๋๊ปด์ง์ง ์์ ์ ์์ง๋ง,
๋ ๋ง์ ์ฐ์ฐ๊ณผ ๋ค์ํ ์กฐ๊ฑด์ด ๋ํด์ ธ ์ฝ๋๊ฐ ์ ์ ๋ณต์กํด์ง๊ณ ๊ธธ์ด์ง๊ฒ ๋๋ฉด ํ ๋๊ปด์ง ๊ฒ์ด๋ค!
โ filter โ
โ๏ธ ๊ธฐ์กด ์ปจํ
์ด๋์์ ์์ ์ค ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๊ฐ์ ๋ํด ์๋ก์ด ์ปจํ
์ด๋๋ฅผ ๋ง๋ค์ด ๋ฐํํ๋ค.
โ reduce โ
โ๏ธ ๊ธฐ์กด์ ์ปจํ
์ด๋์ ์์์ ๋ํด ์ ์ํ ํด๋ก์ ๋ก ๋งคํํ ๊ฒฐ๊ณผ๋ฅผ ์๋ก์ด ์ปจํ
์ด๋๋ก ๋ฐํํ๋ค.
'iOS ์ฑ ๊ฐ๋ฐ ์ข ํฉ๋ฐ > TIL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
3์ฃผ์ฐจ_Swift ๋ฌธ๋ฒ ์ข ํฉ๋ฐ ์ฌํ_๊ฐ์ธ๊ณผ์ _์ผ๊ตฌ๊ฒ์๋ง๋ค๊ธฐ(Lv3~6) (0) | 2024.03.17 |
---|---|
3์ฃผ์ฐจ_Swift ๋ฌธ๋ฒ ์ข ํฉ๋ฐ ์ฌํ_๊ฐ์ธ๊ณผ์ _์ผ๊ตฌ๊ฒ์๋ง๋ค๊ธฐ(Lv1~2) (2) | 2024.03.15 |
3์ฃผ์ฐจ_Swift ๋ฌธ๋ฒ์ข ํฉ๋ฐ ์ฌํ_(1์ผ์ฐจ) (0) | 2024.03.11 |
2์ฃผ์ฐจ_Swift ๋ฌธ๋ฒ ๊ธฐ์ด ๊ณผ์ _๊ณ์ฐ๊ธฐ ๋ง๋ค๊ธฐ (0) | 2024.03.07 |
2์ฃผ์ฐจ_Swift ๋ฌธ๋ฒ์ข ํฉ๋ฐ ๊ธฐ์ด_(3์ผ์ฐจ) (0) | 2024.03.06 |