728x90
반응형
전달인자로 함수를 전달받거나 함수실행의 결과를 함수로 반환하는 함수
map, filter, reduce
map
컨테이너 내부의 기존 데이터를 변형(transform)하여 새로운 컨테이너 생성
let numbers: [Int] = 0,1,2,3,4]
var doubledNumbers: [Int]
var strings: [String]
// for 구문 사용
doubledNumbers = [Int]()
strings = [String]()
for number in numbers {
doubleNumbers.append(number*2)
strings.append("\(number)")
}
print(doubledNumbers) // [0, 2, 4, 6, 8]
print(strings) // ["0", "1", "2", "3", "4"]
// map 메서드 사용
numbers의 각 요소를 2배하여 새로운 배열 반환
doubledNumbers = numbers.map({(number: Int)->Int in return nuber * 2})
// numbers의 각 요소를 문자열로 변환하여 새로운 배열 반환
strings = numbers.map({(number: Int)-> String in return "\(number)"})
print(doubledNumbers) // [0, 2, 4, 6, 8]
print(strings) // ["0", "1", "2", "3", "4"]
// 매개변수, 반환타입, 반환 키워드(return) 생략, 후행 클로저
doubledNumbers = numbers.map {$0 * 2}
print(doubledNumbers) // [0, 2, 4, 6, 8]
filter
컨테이너 내부의 값을 걸러서 새로운 컨테이너로 추출
// for 구문 사용
var filtered: [Int] = [Int]()
for number in numbers {
if number % 2 == 0{
filtered.append(number)
}
}
print(filtered) // [0, 2, 4]
// numbers의 요소 중 짝수를 걸러내어 새로운 배열로 반환
let evenNumbers: [Int] = numbers.filter { // 변수, 상수 둘 다 설정 가능
(number: Int) -> Bool in
return number % 2 == 0
} // Bool이 True일 때만 값이 할당된다.
print(evenNumbers) // [0, 2, 4]
// 매개변수, 반환타입, 반환키워드 생략, 후행 클로저
let oddNumbers: [int] = numbers.filter { $0 % 2 !=0}
print(oddNumbers) // [1, 3]
reduce
컨테이너 내부의 콘텐츠를 하나로 통합
let someNumbers: [Int] = [2, 8, 15]
// for 구문 사용
var result: Int = 0
// someNumbers의 모든 요소를 더한다.
for number in numbers {
result += number
}
print(result) // 25
// reduce 메서드 사용
// 초깃값이 0이고 someNumbers 내부의 모든 값을 더한다.
let sum: Int = someNumbers.reduce(0, {
(first: Int, second: Int) -> Int in
return first + second
})
print(result) // 25
반응형
'IT > IOS' 카테고리의 다른 글
IOS, Swift, Xcode - Basic App - ToDoList 단계별 뽀개기[1] - UIKit (0) | 2023.01.11 |
---|---|
IOS, Swift, Xcode를 배우기 시작하면서 (0) | 2023.01.10 |
swift - 오류처리 Error Handling by yagom (0) | 2023.01.10 |
swift - 익스텐션 extension by yagom (0) | 2023.01.10 |
swift - 프로토콜 by yagom (0) | 2023.01.10 |