고차함수 개념
- 고차 함수는 다른 함수를 전달인자로 받거나 함수 결과를 함수로 반환하는 함수
- 스위프트의 함수(클로저)는 일급시민(일급객체)이기 때문에 함수의 전달인자로 전달할 수 있으며, 함수의 결과값으로 반환할 수 있음
map
- 컨테이너 내부의 기존 데이터를 변형하여 새로운 컨테이너를 생성함
let numbers: [Int] = [0, 1, 2, 3, 4]
var doubledNumbers: [Int]
var strings: [String]
doubledNumbers = numbers.map({ (number: Int) -> Int in
return number * 2
})
strings = numbers.map({ (number: Int) -> String in
return "\(number)"
})
print(doubledNumbers)
print(strings)
doubledNumbers = numbers.map { $0 * 2 }
print(doubledNumbers)
filter
- 컨테이너 내부 값을 특정 조건에 따라 걸러서 새로운 컨테이너로 추출함
let evenNumbers: [Int] = numbers.filter { (number: Int) -> Bool in
return number % 2 == 0
}
print(evenNumbers)
let oddNumbers: [Int] = numbers.filter {
$0 % 2 != 0
}
print(oddNumbers)
reduce
let sum: Int = someNumbers.reduce(0, { (first: Int, second: Int) -> Int in
return first + second
})
print(sum)
var subtract: Int = someNumbers.reduce(0, { (first: Int, second: Int) -> Int in
return first - second
})
print(subtract)
let sumFromThree = someNumbers.reduce(3) { $0 + $1 }
print(sumFromThree)