-
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()잘못된 정보를 수정해주시거나 조언해주시는 부분은 언제든 환영입니다!
'TIL' 카테고리의 다른 글
TIL MVC, Design Patterns (0) 2023.01.02 TIL 💡git revert, reset 사용법의 차이, swift 전달인자 레이블(argumentLabel) (0) 2022.12.21 TIL 💡 github과 git의 차이, git 저장위치, 터미널 명령어, 플로우 차트 그려보기 (0) 2022.12.19 - compactMap(_:)