티스토리 뷰

Swift/Swift 문법

[고차함수 4] reduce

내일은개발천재🎵 2022. 12. 29. 16:58

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
링크
«   2025/03   »
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
글 보관함