관리 메뉴

사과하는 제라스

[Swift 문법] compactMap이란? 본문

제라스의 iOS 공부/Swift 문법

[Swift 문법] compactMap이란?

Xerath(제라스) 2023. 8. 18. 11:22

목차

    728x90
    반응형

    map을 공부하다가 보니 compactMap이란 것을 알게 되었다.

     

    우리가 늘 상 쓰는 map은 nil을 포함하는 collection타입(배열, set 등등)에 대해서 적용 시 nil의 경우엔 따로 unwrapping도 해줘야 하고 처리를 해줄 필요가 있다.

     

    하지만 compactMap을 쓴다면 nil인 요소들은 건너뛰어주고, unwrapping도 스스로 적용해서 optional한 collection에 대해 unwrapping이 되어 나오기에 편리하다.

     

    다음을 보도록 하자.

    import UIKit
    
    arr = ["hello", "hi", nil, "ok"]
    
    arr.map{
        print($0+"라고 말했다.")
    }

    이럴 경우 에러가 뜬다. String?이기에 unwrapping이 필요하다.

    import UIKit
    
    var arr = ["hello", "hi", nil, "ok"]
    
    arr.map{
        if let element = $0 {
            print(element+"라고 말했다.")
        }
    }

    이렇게 하면 unwrapping이 된다. 하지만 nil을 버리고 그 자체로 값을 가져올 수가 없다.

    그러니 nil을 제외하고서 가져오려면 compactMap을 쓰자.

     

    import UIKit
    
    var arr = ["hello", "hi", nil, "ok"]
    
    arr.compactMap{ $0 }

    이러면 arr에서 nil을 제외한 ["hello", "hi", "ok"]를 가져올 수 있다.

     

    728x90
    반응형