๊ณ ์ฐจํจ์(Higher-order-Function)๋?
ํจ์๋ฅผ ํ๋ผ๋ฏธํฐ๋ก ์ฌ์ฉํ๊ฑฐ๋, ํจ์์ ์คํ ๊ฒฐ๊ณผ๋ฅผ ํจ์๋ก ๋ฆฌํดํ๋ ํจ์
์ฆ, ์ธํ์ด ํจ์์ด๊ฑฐ๋, ์์ํ์ด ํจ์์ธ ํจ์
๐ 1 . map ํจ์
๋ฐฐ์ด์ ๊ฐ ์์๋ค์ ํ๋ ํ๋ ๊บผ๋ด์ ์๋กญ๊ฒ ๋ณํ(ํด๋ก์ ์์)ํด ์๋ก์ด ๋ฐฐ์ด์ ๋ง๋ค ๋ ์ฌ์ฉ
let numbers = [1, 2, 3]
//Int -> String
var array = numbers.map { paramNum in //paramNum์ ํ์
์ Int
return "\(paramNum)"
}
//์ถ์ฝ ํํ
var array = numbers.map { "\($0)" }
print(array) //์ถ๋ ฅ: ["1", "2", "3"]
๐ 2. filter ํจ์
๋ฐฐ์ด์ ์์๋ค์ ๋ํด ํด๋น ์กฐ๊ฑด(ํด๋ก์ ์์ ๊ตฌํ)์ ํด๋น(true)ํ๋ ์์๋ค์ ๊ฑธ๋ฌ ์๋ก์ด ๋ฐฐ์ด์ ๋ง๋ค ๋ ์ฌ์ฉ
let numbers = [1, 2, 3, 4]
//์ง์์ธ ๋ฐฐ์ด ๊ตฌํ๊ธฐ
var array = numbers.filter{$0 % 2 == 0}
print(array) //์ถ๋ ฅ: [2, 4]
//filter๋ฅผ ์ค๋ณตํด์ ์ฌ์ฉ ๊ฐ๋ฅ
var array = numbers.filter{$0 % 2 == 0}.filter{$0 < 4}
print(array) //์ถ๋ ฅ: [2]
๐ 3. reduce ํจ์
๋ฐฐ์ด์ ๊ฐ ์์๋ค์ ํด๋ก์ ๊ฐ ์ ๊ณตํ๋ ๋ฐฉ์์ผ๋ก ๊ฒฐํฉํด ํ๋์ ๋ง์ง๋ง ๊ฒฐ๊ณผ๊ฐ์ ๋ฆฌํด
let numbers = [1, 2, 3, 4, 5]
//0์ ์ด๊ธฐ๊ฐ, 0์ด a์ ๋ค์ด๊ฐ๊ณ ๋ฐฐ์ด์ ์ฒซ๋ฒ์งธ ์์๊ฐ b์ ๋ค์ด๊ฐ๊ณ ๋์
var newNum = numbers.reduce(0) { a, b in
return a + b
}
//$0์ ํ์ฌ๊น์ง์ ๋์ ํฉ๊ณ, $1์ ๋ฐฐ์ด์ ํ์ฌ์์
var newNum = numbers.reduce(0) { $0 + $1 }
//์ถ๊ฐ ์ถ์ฝ ์ฝ๋
var newNum = numbers.reduce(0, +)
๐ 4. forEach ํจ์
๐ 5. compactMap ํจ์
๐ 6. flatMap ํจ์
๐ Reference
'๐ iOS > Swift' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ Swift ] ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ(ARC) (0) | 2024.07.13 |
---|---|
components์ split ๋ฉ์๋ ๋น๊ต / ๋ฌธ์์ด์ ํน์ ๋ฌธ์๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฐฐ์ด๋ก ๋ณํ (0) | 2024.06.27 |
[ Swift ๊ธฐ์ด ๋ฌธ๋ฒ ] ํด๋ก์ (Closure) (0) | 2024.06.25 |
[ Swift ๊ธฐ์ด ๋ฌธ๋ฒ ] ํ๋กํ ์ฝ (Protocol) (0) | 2024.06.25 |
[ Swift ๊ธฐ์ด ๋ฌธ๋ฒ ] Property - ์ ์ฅ ์์ฑ / ๊ณ์ฐ ์์ฑ / ํ์ ์์ฑ (0) | 2024.06.24 |