Swift - 선택적 연결

1958 단어
  • 옵셔널 체이닝은 현재 nil일 수 있는 옵셔널에서 속성, 메소드, 첨자를 쿼리하고 호출하는 프로세스입니다.
  • 옵션에 값이 포함되어 있으면 속성, 메서드 또는 첨자 호출이 성공합니다. 옵션이 nil이면 속성, 메서드 또는 첨자 호출이 nil을 반환합니다.
  • 이는 해당 값의 강제 언래핑(!)과 매우 유사합니다. 주요 차이점은 optional이 nil일 때 optional chaining이 정상적으로 실패하는 반면 강제 언래핑은 optional이 nil일 때 런타임 오류를 트리거한다는 것입니다.
  • 선택적 연결 호출의 결과는 쿼리하는 속성, 메서드 또는 첨자가 선택적이 아닌 값을 반환하는 경우에도 항상 선택적 값입니다.

  • 예시 :

    class Person {
        var residence: Residence?
    }
    



    class Residence {
        var rooms: [Room] = []
        var numberOfRooms: Int {
            return rooms.count
        }
        subscript(i: Int) -> Room {
            get {
                return rooms[i]
            }
            set {
                rooms[i] = newValue
            }
        }
        func printNumberOfRooms() {
            print("The number of rooms is \(numberOfRooms)")
        }
        var address: Address?
    }
    



    class Room {
        let name: String
        init(name: String) { self.name = name }
    }
    



    class Address {
        var buildingName: String?
        var buildingNumber: String?
        var street: String?
        func buildingIdentifier() -> String? {
            if let buildingNumber = buildingNumber, let street = street {
                return "\(buildingNumber) \(street)"
            } else if buildingName != nil {
                return buildingName
            } else {
                return nil
            }
        }
    }
    



    if let beginsWithThe =
        john.residence?.address?.buildingIdentifier()?.hasPrefix("The") {
        if beginsWithThe {
            print("John's building identifier begins with \"The\".")
        } else {
            print("John's building identifier doesn't begin with \"The\".")
        }
    }
    

    좋은 웹페이지 즐겨찾기