๋ฐ์ํ
๊ณ ์ฐจํจ์
- ๊ณ ์ฐจํจ์๋ ๋ค๋ฅธ ํจ์๋ฅผ ์ ๋ฌ์ธ์๋ก ๋ฐ๊ฑฐ๋ ํจ์์คํ์ ๊ฒฐ๊ณผ๋ฅผ ํจ์๋ก ๋ฐํํ๋ ํจ์
- swift์ ํจ์(ํด๋ก์ )๋ ์ผ๊ธ์๋ฏผ์ด๊ธฐ ๋๋ฌธ์ ํจ์์ ์ ๋ฌ์ธ์๋ก ์ ๋ฌํ ์ ์์ผ๋ฉฐ, ํจ์์ ๊ฒฐ๊ด๊ฐ์ผ๋ก ๋ฐํํ ์ ์์
์ผ๊ธ๊ฐ์ฒด (First Class Citizen)
- ๊ฐ์ฒด๊ฐ ๋ฐํ์์๋ ์์ฑ ๊ฐ๋ฅํ๋ค.
- ๊ฐ์ฒด๋ฅผ ์ธ์ ๊ฐ์ผ๋ก ์ ๋ฌํ ์ ์์ด์ผ ํ๋ค.
- ๊ฐ์ฒด๋ฅผ ๋ฐํ ๊ฐ์ผ๋ก ์ฌ์ฉํ ์ ์์ด์ผ ํ๋ค.
- ๋ฐ์ดํฐ ๊ตฌ์กฐ ์์ ์ ์ฅํ ์ ์์ด์ผ ํ๋ค.
map
- ๊ธฐ์กด์ ์ปจํ ์ด๋์ ์์์ ๋ํด ์ ์ํ ํด๋ก์ ๋ก ๋งคํํ ๊ฒฐ๊ณผ๋ฅผ ์๋ก์ด ์ปจํ ์ด๋๋ก ๋ฐํ
//For๋ฌธ ์ฌ์ฉ
let numArray = [1,2, 3, 4, 5, 6, 7, 8, 9]
var multiplyArray = [Int]()
for num in numArray{
multiplyArray.append(num*7)
}
print(multiplyArray) //[7, 14, 21, 28, 35, 42, 49, 56, 63]
//map ์ฌ์ฉ
let numArray = [1,2, 3, 4, 5, 6, 7, 8, 9]
var multiplyArray: [Int] = numArray.map {$0*7}
print(multiplyArray) //[7, 14, 21, 28, 35, 42, 49, 56, 63]
filter
- ๊ธฐ์กด ์ปจํ ์ด๋์ ์์์ ๋ํด ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๊ฐ์ ๋ํด์ ์๋ก์ด ์ปจํ ์ด๋๋ก ๋ฐํ
//For๋ฌธ ์ฌ์ฉ
let numArray = [1,2, 3, 4, 5, 6, 7, 8, 9]
var evenNumArray = [Int]()
for num in numArray{
if num%2 == 0{
evenNumArray.append(num)
}
}
print(evenNumArray) //[2, 4, 6, 8]
//filter ์ฌ์ฉ
let numArray = [1,2, 3, 4, 5, 6, 7, 8, 9]
var evenNumArray = numArray.filter {$0%2 == 0}
print(evenNumArray) //[2, 4, 6, 8]
reduce
- ์ ์ํ ํด๋ก์ ๋ฅผ ์ฌ์ฉํ์ฌ ๊ธฐ์กด ์ปจํ ์ด๋์ ์์๋ฅผ ๊ฒฐํฉํ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํ
- ์ด๊ธฐ๊ฐ์ด ํ์
//For๋ฌธ ์ฌ์ฉ
let numArray = [1,2, 3, 4, 5, 6, 7, 8, 9]
var sum = 0
for num in numArray{
sum += num
}
print(sum) //45
//reduce 1
let numArray = [1,2, 3, 4, 5, 6, 7, 8, 9]
var sum = numArray.reduce(0, +)
print(sum) //45
//reduce 2
let numArray = [1,2, 3, 4, 5, 6, 7, 8, 9]
var sum = numArray.reduce(0) {$0 + $1}
print(sum) //45
forEach
- for-in๊ณผ ๋์ผํ๊ฒ ๊ฐ๊ฐ์ Element๋ค์ ํธ์ถ
- forEach์์๋ break, continue ๊ตฌ๋ฌธ์ ์ฌ์ฉํ ์ ์๊ณ , return์ ํตํด์ ๋น ์ ธ๋๊ฐ ์ ์์
let array = [1,2,3,4,5]
//for-in๋ฌธ
for num in array {
print(num)
}
//forEach๋ฌธ
array.forEach {
print($0)
}
compactMap
- ์ปจํ ์ด๋์ ๊ฐ ์์๋ฅผ ์กฐ๊ฑด์ ์ง์ ํ์ฌ ํธ์ถํ ๋, nil ์ด ์๋ ๋ฐฐ์ด์ ๋ฐํ
- sequence์ ๋ชจ๋ ์์์ ๋ํ ๋ณํ ์์ ๊ฒฐ๊ณผ ์ค nil์ด ์๋ ๊ฒ๋ง์ Array๋ก ๋ฐํ
//1์ฐจ์ ๋ฐฐ์ด
let a = [1, 2, 3, nil, 4, 5]
let compactMapTest = a.compactMap { $0 }
print(compactMapTest) // [1, 2, 3, 4, 5]
//nil์ด ์๋ 2์ฐจ์ ๋ฐฐ์ด
let a = [[1, 2, 3], [nil, 4, 5]]
let compactMapTest = a.compactMap { $0 }
print(compactMapTest)
//[[Optional(1), Optional(2), Optional(3)], [nil, Optional(4), Optional(5)]]
//nil์ด ์๋ 2์ฐจ์ ๋ฐฐ์ด
let a = [[1, 2, 3], [4, 5]]
let compactMapTest = a.compactMap { $0 }
print(compactMapTest) //[[1, 2, 3], [4, 5]]
flatMap
- ์ปจํ ์ด๋์ ๊ฐ ์์๋ฅผ ์ฌ์ฉํ์ฌ ์ง์ ๋ ์กฐ๊ฑด์ ํธ์ถํ ๋, ์์ฐจ์ ์ธ ๊ฒฐ๊ณผ์ ๋ฐฐ์ด์ ๋ฐํ
- equence์ ๋ชจ๋ ์์์ ๋ํ ๋ณํ ์์ ์ concatenate ํ์ฌ ๋ฐํ
- ๊ณ ์ฐจ์ ๋ฐฐ์ด์ ํ ๊บผํ ๋ฒ๊ฒจ์ ํ๋ ์๋์ ์ฐจ์์ผ๋ก ๋ฐ๊ฟ์ค๋ค๋ ์๋ฏธ
//1์ฐจ์ ๋ฐฐ์ด
let a = [1, 2, 3, nil, 4, 5]
let flatMapTest = a.flatMap { $0 }
print(flatMapTest) // [1, 2, 3, 4, 5]
//nil์ด ์๋ 2์ฐจ์ ๋ฐฐ์ด
let a = [[1, 2, 3], [nil, 4, 5]]
let flatMapTest = a.flatMap { $0 }
print(flatMapTest)
//[Optional(1), Optional(2), Optional(3), nil, Optional(4), Optional(5)]
//nil์ด ์๋ 2์ฐจ์ ๋ฐฐ์ด
let a = [[1, 2, 3], [4, 5]]
let flatMapTest = a.flatMap { $0 }
print(flatMapTest) //[1, 2, 3, 4, 5]
๋ฐ์ํ
'โจ๏ธ Language > swift' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค LV.1] ์๋ฐ์๋ฐ์๋ฐ์๋ฐ์๋ฐ์? (0) | 2023.02.07 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค LV.1] ์์ ์ฐพ๊ธฐ (0) | 2023.02.07 |
[Swift] ํด๋ก์ (Closure) (0) | 2023.02.06 |
[Swift] ์ต์คํ ์ (Extensions) (0) | 2023.02.06 |
[Swift] ํ๋กํ ์ฝ (Protocol) (0) | 2023.02.06 |