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 }

앨런님의 강의를 듣고 작성한 글입니다.