티스토리 뷰
reduce
- 기존 배열 등의 각 아이템을 클로저가 제공하는 방식으로 결합해서 마지막 결괏값을 리턴한다.
- 초깃값과 클로저(결합방식)이 필요하다. → 2개의 파라미터 사용
- 각 아이템을 결합하여 단 하나의 값으로 리턴한다.
- 초깃값은 클로저를 반복하며 지속적으로 업데이트 된다.
- 이전 클로저의 결괏값 = 초깃값에 업데이트
예시코드 - 배열의 합 계산
var numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
// numbers.reduce (parameter1, parameter2)이고, parameter2 = 함수형태
var result = numbers.reduce(0) { (sum, num) in
return sum + num
}
print(result) // 55, 모든 원소의 합
- sum = 초깃값, num = 현재 순환하고 있는 아이템
예시코드 - 클로저 규칙사용
var numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
var result = numbers.reduce(0) { $0 + $1 }
예시코드 - 기타
var numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
var result = numbers.reduce(0) { result, item in
return result + String(item)
}
print(result) // "012345678910"
예시코드 - 홀수만 제곱하여 더하기
var numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
var result = numbers.filter { num in
return num % 2 != 0 // 홀수
}.map { num in
return num * num
}.reduce(0) { sum, item in
sum + item
}
// 위와 완전히 동일한 코드
var numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
var result = numbers.filtet { $0 % 2 != 0 }
.map { $0 * $0 }
.reduce(0) { $0 + $1 }
앨런님의 강의를 듣고 작성한 글입니다.
'Swift > Swift 문법' 카테고리의 다른 글
[ARC 1] Swift의 메모리 관리 모델 (0) | 2022.12.30 |
---|---|
[고차함수 5] forEach, compactMap, flatMap (0) | 2022.12.29 |
[고차함수 3] filter (0) | 2022.12.29 |
[고차함수 2] Map (0) | 2022.12.29 |
[고차함수 1] 고차함수는 무엇인가? (0) | 2022.12.29 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- for문
- CHR
- 깃허브
- 반복문
- do while
- CodeUp
- 시간초과
- replit
- python
- SwiftUI
- Code up
- 깃
- 리플릿
- 설명
- level1
- 파이썬
- 부르트포스
- 이것이 코딩테스트다
- baekjoon
- 프로그래머스
- 레플릿
- ord
- 정답
- Swift
- 기초 100제
- 코드업
- COMMIT
- 16진수 입력
- 코드 업
- 백준
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
글 보관함