🟥 고차함수란?
다른 함수를 전달인자로 받거나 함수 실행의 결과를 함수로 반환하는 함수를 말한다.
🟥 Map
기존 데이터를 변형하여, 새로운 컨테이너를 만든다.
단, 이 때 기존 데이터는 변형되지 않는다.
✅ for - in 구문과 기능상 차이는 없지만, 다음과 같은 이점이 있다.
- 코드의 간결성
- 재사용 용이
- 컴파일러 최적화 성능 향상
✅ for - in
let numArray = [1,3,5,7,9]
var multiArray = [Int]()
for num in numArray {
multiArray.append(num * 2)
}
print(multiArray)
// [2, 6, 10, 14, 18]
✅ map
let numArray = [1,3,5,7,9]
let multiArray = numArray.map { $0 * 2 }
print(multiArray)
// [2, 6, 10, 14, 18]
✔ 위의 코드는 후행 클로저 적용
✔ 아래 코드는 후행 클로저 미적용
let numArray = [1,3,5,7,9]
let multiArray = numArray.map({ (number: Int) -> Int in
return number * 2
})
print(multiArray)
// [2, 6, 10, 14, 18]
🟥 Filter
데이터를 추출하고자 할 때 사용한다.
기존 컨테이너에서 내부의 값을 조건에 따라 걸러 새로운 컨테이너를 만든다.
✅ for - in
let stringAttay = ["가수", "대통령", "개발자", "선생님", "의사", "검사", "건물주"]
var threeCountArray = [String]()
for st in stringAttay {
if st.count == 3 {
threeCountArray.append(st)
}
}
print(threeCountArray)
// ["대통령", "개발자", "선생님", "건물주"]
✅ filter
let stringAttay = ["가수", "대통령", "개발자", "선생님", "의사", "검사", "건물주"]
let threeCountArray = stringAttay.filter { $0.count == 3 }
print(threeCountArray)
// ["대통령", "개발자", "선생님", "건물주"]
✔ 위의 코드는 후행 클로저 적용
✔ 아래 코드는 후행 클로저 미적용
let stringAttay = ["가수", "대통령", "개발자", "선생님", "의사", "검사", "건물주"]
let threeCountArray = stringAttay.filter({ (value: String) -> Bool in
return value.count == 3
})
print(threeCountArray)
// ["대통령", "개발자", "선생님", "건물주"]
🟥 Reduce
데이터를 합치기 위해 사용한다.
기존 컨테이너에서 내부의 값들을 결합하여 새로운 값을 만든다.
✅ for - in
let numberArray = [1,2,3,4,5,6,7,8,9,10]
var sum = 0
for number in numberArray {
sum += number
}
print(sum)
// 55
✅ reduce
let numberArray = [1,2,3,4,5,6,7,8,9,10]
let sum = numberArray.reduce(0) { $0 + $1 }
print(sum)
// 55
✔ 위의 코드는 후행 클로저 적용
✔ 아래 코드는 후행 클로저 미적용
let numberArray = [1,2,3,4,5,6,7,8,9,10]
let sum = numberArray.reduce(0, { (first: Int, second: Int) -> Int in
return first + second
})
print(sum)
// 55
'Swift' 카테고리의 다른 글
MVVM 패턴 - Binding 개념 (0) | 2024.05.30 |
---|---|
MVVM 패턴 (Model - View - ViewModel) (0) | 2024.05.30 |
MVC 패턴 (Model - View - Controller) (0) | 2024.05.25 |
확장 (Extension) (0) | 2024.05.24 |
클로저 6편 (1) | 2024.02.17 |