ํผ๋๋ก ๋์๊ฐ๊ธฐ
Dev.toFrontend
์๋ฌธ ์ฝ๊ธฐ
Swift Closure๋ฅผ ํตํ ์ผ๋ฑ ์๋ฏผ ํจ์ ๊ตฌํ ๋ฐ ๋น๋๊ธฐ ์ ์ด ๊ตฌ์กฐ ์ค๊ณ
Swift Closures โ Functions You Can Pass Around ๐ฆ
AI ์์ฝ
Context
ํจ์๋ฅผ ๋ณ์์ ์ ์ฅํ๊ฑฐ๋ ์ธ์๋ก ์ ๋ฌํ๋ ์ผ๋ฑ ์๋ฏผ ํจ์(First-class Function) ๊ตฌํ ํ์์ฑ ์ฆ๋. ์ผ๋ฐ์ ์ธ ๋ช ๋ช ํจ์ ๋ฐฉ์์ผ๋ก๋ SwiftUI์ ๊ฐ์ ์ ์ธํ UI ํ๋ ์์ํฌ์ ์ด๋ฒคํธ ๊ธฐ๋ฐ ์ฝ๋ฐฑ ๊ตฌ์กฐ๋ฅผ ์ ์ฐํ๊ฒ ์ฒ๋ฆฌํ๊ธฐ ์ด๋ ค์ด ์ ์ฝ ์กด์ฌ.
Technical Solution
- ์ต๋ช ํจ์ ํํ์ Closure expression์ ๋์ ํ์ฌ ์ฝ๋ ๋ธ๋ก์ ๋ณ์ํํ๊ณ ๋ฐํ์์ ์ ๋ฌ ๊ฐ๋ฅํ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ก ์ค๊ณ
- Tuple๊ณผ์ ๊ตฌ๋ฌธ ์ถฉ๋ ๋ฐฉ์ง๋ฅผ ์ํด ๋งค๊ฐ๋ณ์์ ๋ฐํ ํ์ ์ ์ค๊ดํธ ๋ด๋ถ๋ก ๋ฐฐ์นํ๊ณ 'in' ํค์๋๋ก ์คํ๋ถ์ ๋ถ๋ฆฌํ๋ ๊ตฌ์กฐ ์ฑํ
- ์ธ๋ถ ํ๋ผ๋ฏธํฐ ๋ผ๋ฒจ์ ์ ์ธํ Function Type ์ ์๋ฅผ ํตํด ํจ์ ์๊ทธ๋์ฒ์ ํ์คํ ๋ฐ ํธํ์ฑ ํ๋ณด
- sorted(by:)์ ๊ฐ์ ๊ณ ์ฐจ ํจ์์ Closure๋ฅผ ์ฃผ์ ํ์ฌ ๋ฐํ์์ ์ ๋ ฌ ๋ก์ง์ ๋์ ์ผ๋ก ๋ณ๊ฒฝํ๋ ์ ๋ต ์ ์ฉ
- ์ง์ฐ ์คํ(Deferred Execution) ๋ฉ์ปค๋์ฆ์ ํตํด ๋คํธ์ํฌ ์๋ต์ด๋ ์ ๋๋ฉ์ด์ ์๋ฃ ์์ ์ ํ์ ์์ ์ ์ด
์ค์ฒ ํฌ์ธํธ
- ๋น๋๊ธฐ ์ฝ๋ฐฑ์ด๋ ์ด๋ฒคํธ ํธ๋ค๋ฌ ์ค๊ณ ์ Closure๋ฅผ ํ์ฉํ ์ง์ฐ ์คํ ๊ตฌ์กฐ ๊ฒํ - ํจ์ ํ์ ์ ์ ์ ํ๋ผ๋ฏธํฐ ๋ผ๋ฒจ์ด ์ ์ธ๋จ์ ์ธ์งํ์ฌ ์ธํฐํ์ด์ค ์ค๊ณ์ ๋ฐ์ - ๋จ์ ๋ก์ง์ ๋ฐ๋ณต ์ ๋ฌ ์ ๋ช ๋ช ํจ์๋ณด๋ค Closure expression์ ํตํ ์ธ๋ผ์ธ ๊ตฌํ์ผ๋ก ์ฝ๋ ์์ง๋ ํฅ์