【Swift】Optional인 요소를 가지는 Array를 루프로 unwrap 해 사용

소개



다음과 같은 Optional으로 싸인 요소를 가진 Array가 있다고 가정합니다.
이 Array에 대해서, 루프내에서 nil이 아닌 요소를 unwrap 해 처리를 실행하는 상황을 생각합니다.
let items: [Int?] = [1, 3, nil, 6, 10, nil, nil, 8]

이런 처리를 쓰는 방법을 처음 알게 된 방법도 있었기 때문에 4 종류 정도 소개해 보겠습니다.
네 가지 유형 모두 처리 결과는 동일합니다.

실행된 Swift 버전


  • Swift 5.1

  • 쓰기



    ▼ 간단한 루프



    반복하면서 guard에서 nil을 연주해보십시오.
    for i in items {
        guard let item = i else {
            continue
        }
        print(item)
    }
    
    // ↓出力結果
    // 1
    // 3
    // 6
    // 10
    // 8
    

    ▼ Enumeration Case Pattern



    Enumeration Case Pattern으로 패턴 매칭
    for case .some(let item) in items {
        print(item)
    }
    
    // ↓出力結果
    // 1
    // 3
    // 6
    // 10
    // 8
    

    ▼ Optional Pattern



    Optional Pattern으로 패턴 매칭
    for case let item? in items {
        print(item)
    }
    
    // ↓出力結果
    // 1
    // 3
    // 6
    // 10
    // 8
    

    ▼ Functional



    함수형으로 작성해 보겠습니다.
    items.compactMap({ $0 }).forEach({ print($0) })
    
    // ↓出力結果
    // 1
    // 3
    // 6
    // 10
    // 8
    

    결론



    분명 그 밖에도 여러가지 쓰는 방법을 할 수 있겠지~라고 생각합니다.
    실수가 있으시면 지적하십시오

    참고

    좋은 웹페이지 즐겨찾기