HIT해

[Swift 기초문법 - 28] map 본문

Swift/Swift 기초문법

[Swift 기초문법 - 28] map

힛해 2024. 8. 14. 05:54
728x90

map이란?

콜렉션(데이터의 모음) 이나 배열, set, dictionary 등의 형태를 바꾸는 고차함수.

 

 

배열의 요소들 하나하나의 형태를 T 다른 형태로 바꾸고 이를 배열 형태로 반환한다.

 

 

1. Array

let myNumbers : [String] numbers.map {
	return "내 숫자 : \($0)"
}

//let myNumbers : [String] numbers.map { (aNumber : Int) in
//	return "내 숫자 : \(aNumber)"
//}

 

 

2. Dictionary

let myPetDictionary = ["고양이" : "야옹, "강아지" : "멍멍"]

// let myPets : [String] = myPetDictionary.map { (animal:String, cry:String) in
//	return "\(animal)의 울음소리는 \(cry)"
//}

//let myPets : [String] = myPetDictionary.map { animal, cry in
//	return "\(animal)의 울음소리는 \(cry)"
//}

let myPets : [String] = myPetDictionary.map { 
	return "\($0)의 울음소리는 \($1)"
}

 

3. Set

let numberSet : Set<Int> = [1,1,1,2,3,4,4,4,5]

let myFavoriteNumbers : [String] = numberSet.map { aNumber in
	return "\(aNumber * 10) + 입니다"
}

 

프로젝트 사용예시

 

nil이 있는 경우 언래핑 처리를 해주어야한다.

let FriendsArray : [String?] = ["철수", nil, "짱구"]

let myBestFriends : [String] = FriendsArray.map { aFreind in
	let Friend = aFriend ?? ""
    
    return "친한친구" + Friend
}

 

compactMap을 사용하면 자동으로 언래핑을 해주어서 nil인 경우 아예 값을 주지 않아서 map자체가 실행되지 않게 된다.

원래라면 새로 생성된 배열에 3개였다면( nil 포함 ) compactMap을 사용하면 2개가 할당된다.

 

let myBestFriends : [String] = FriendsArray.compactMap {$0}.map{
	return "\($0)입니다"
}

 

이렇게 작성하면 한번 언래핑을 하고 맵을 사용하기때문애 nil값을 map에서 돌리지 않게 만들 수 있다.