HIT해

[Swift 기초문법 - 39] reduce 본문

Swift/Swift 기초문법

[Swift 기초문법 - 39] reduce

힛해 2024. 8. 17. 08:51
728x90

Reduce란?

주어진 클로저를 사용하여 시퀀스의 요소를 결합한 결과를 반환합니다.

=> 요소들을 다 합친다고 보면 됨

 

사용예시

struct Friend : Hashable {
	var name : STring
    var age : Int
}

let myFriends = [
	Friend(name:"철수", age : 10)
	Friend(name:"짱구", age : 10)
	Friend(name:"유리", age : 10)
	Friend(name:"멩구", age : 10)
]

let totalAge = myFriends.reduce(0) { partialResult , aFriend in
	return partialResult + aFriend.age
}
// reduce(초기값) { partialResult , aFriend in  // partialResult 처음에는 초기값이 들어온다
//	return partialResult + aFriend.age
//}

 

요소들을 돌면서 값들을 합치게 할 수 있다.

( 알고리즘 문제에서 유용하게 사용할 수 있을지도..? 속도만 빠르다면.. )

 

다른 사용 방법이 있다.

// [:] 딕셔너리 형태로 만들겠다
let groupedFriends = myFriends.reduce(into: [:]){
	partialResult, aFriend in
    partialResult[aFriend.age] = myFriends.filter{ $0.age == aFriend.age }
    // return partialResult[aFriend.age] = myFriends.filter{ $0.age == aFriend.age }
    // return 생략해도된다
}

groupedFriends // 나이별로 묶여짐