ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • TIL 💡 swift compactMap(_:), enumerated()
    TIL 2022. 12. 24. 13:33

     

     

    • compactMap(_:)
      : 각 아이템을 매핑해서 변형하되 자동으로 옵셔널 제거하고 새로운 배열을 생성 해준다. 
      일반적으로 map은 각 아이템을 매핑해서, 변형해서 새로운 배열생성을 해주는 것이고 
      map이 가진 기능을 더해 옵셔널 값을 제거하고 새로운 배열을 생성해주는 것!
    let findNumbers = ["1", "2", "three", "///4///", "5"]
    
    let mapped: [Int?] = findNumbers.map { str in Int(str) }
    print(mapped)
    //[Optional(1), Optional(2), nil, nil, Optional(5)]
    
    let compactMapped: [Int] = findNumbers.compactMap { str in Int(str) }
    print(compactMapped)
    //[1, 2, 5]

    위의 예시 코드처럼 배열 내의 값을 map을 이용해서 mapping했을 경우에는 nil값이 사라지지 않는다!
    하지만 compactMap의 경우에는 nil 값을 제외한 값이 담기고 옵셔널 바인딩의 역할도 함께 함!

     

     

    • enumerated
      : 배열에 사용하면 (index, value) 튜플형식으로 만들어진 배열이 리턴된다.
      아래와 같이 compactMap, enumerated를 적용하여 함수를 만들어보자!
    var climbingCheckList: [String?] = ["암벽화", nil, "초크", "초크백", nil, "브러쉬", "자일", "하네스"]
    
    let checkList = climbingCheckList.compactMap { $0 }
    for (index, product) in checkList.enumerated() {
        print("\(index)번째 준비물은 \(product)입니다")
    }
    
    //0번째 준비물은 암벽화입니다
    //1번째 준비물은 초크입니다
    //2번째 준비물은 초크백입니다
    //3번째 준비물은 브러쉬입니다
    //4번째 준비물은 자일입니다
    //5번째 준비물은 하네스입니다

    위의 출력된 구문처럼 index와 함께 해당 인덱스에 속한 value 값이 출력되는 것을 확인할 수 있다!

     

     

    🏷️참고사이트:
    https://developer.apple.com/documentation/swift/sequence/compactmap(_:)
    https://developer.apple.com/documentation/swift/sequence/enumerated()

     

    잘못된 정보를 수정해주시거나 조언해주시는 부분은 언제든 환영입니다! 

    댓글

Designed by Tistory.