🔥 옵셔널 체이닝을 통한 서브스크립트 접근
강의 목차
옵셔널 값에서 서브스크립트를 사용하여 값을 가져오거나 설정하고, 해당 서브스크립트 호출이 성공했는지 확인하기 위해 옵셔널 체이닝을 사용할 수 있습니다.
아래 예제는 Residence
클래스에 정의된 서브스크립트를 사용하여 john.residence
속성의 rooms
배열에서 첫 번째 방의 이름을 가져오려고 합니다. 현재 john.residence
가 nil
이기 때문에 서브스크립트 호출은 실패합니다:
if let firstRoomName = john.residence?[0].name { print("The first room name is \(firstRoomName).") } else { print("Unable to retrieve the first room name.") } // "Unable to retrieve the first room name."이 출력됩니다.
swift
이 서브스크립트 호출에서 옵셔널 체이닝 물음표는 서브스크립트 대괄호 앞에 있는 john.residence
바로 뒤에 위치합니다. 왜냐하면 john.residence
가 옵셔널 체이닝을 시도하는 옵셔널 값이기 때문이죠.
유사하게, 옵셔널 체이닝을 통해 서브스크립트로 새로운 값을 설정할 수도 있습니다:
john.residence?[0] = Room(name: "Bathroom")
swift
이 서브스크립트 설정 시도 역시 residence
가 현재 nil
이기 때문에 실패합니다.
만약 실제 Residence
인스턴스를 생성하고 john.residence
에 할당하며, rooms
배열에 하나 이상의 Room
인스턴스가 있다면, 옵셔널 체이닝을 통해 Residence
서브스크립트를 사용하여 rooms
배열의 실제 항목에 접근할 수 있습니다:
let johnsHouse = Residence() johnsHouse.rooms.append(Room(name: "Living Room")) johnsHouse.rooms.append(Room(name: "Kitchen")) john.residence = johnsHouse if let firstRoomName = john.residence?[0].name { print("The first room name is \(firstRoomName).") } else { print("Unable to retrieve the first room name.") } // "The first room name is Living Room."이 출력됩니다.
swift
옵셔널 타입의 서브스크립트 접근
만약 서브스크립트가 Swift의 Dictionary
타입의 키 서브스크립트와 같이 옵셔널 타입의 값을 반환한다면, 서브스크립트의 닫는 대괄호 뒤에
물음표를 붙여 반환값의 옵셔널을 체이닝합니다:
var testScores = ["Dave": [86, 82, 84], "Bev": [79, 94, 81]] testScores["Dave"]?[0] = 91 // "Dave" 배열이 [91, 82, 84]로 업데이트됩니다. testScores["Bev"]?[0] += 1 // "Bev" 배열이 [80, 94, 81]로 업데이트됩니다. testScores["Brian"]?[0] = 72 // 아무 변화도 없습니다.
swift
위의 예제는 testScores
라는 딕셔너리를 정의하는데, 이는 String
키를 Int
값의 배열에 매핑하는 두 개의 키-값 쌍을 포함하고 있습니다. 예제에서는 옵셔널 체이닝을 사용하여 "Dave"
배열의 첫 번째 항목을 91
로 설정하고, "Bev"
배열의 첫 번째 항목을 1
증가시키며, "Brian"
키의 배열에서 첫 번째 항목을 설정하려고 시도합니다.
처음 두 호출은 testScores
딕셔너리에 "Dave"
와 "Bev"
키가 포함되어 있기 때문에 성공합니다. 세 번째 호출은 testScores
딕셔너리에 "Brian"
키가 포함되어 있지 않기 때문에 실패하게 됩니다.
이렇게 옵셔널 체이닝을 사용하면 안전하게 서브스크립트에 접근하고 값을 설정할 수 있습니다. 옵셔널 체이닝은 Swift에서 매우 강력하고 유용한 기능으로, 옵셔널 값을 다룰 때 코드의 가독성과 안정성을 크게 향상시켜 줍니다.
아래는 옵셔널 체이닝을 사용한 서브스크립트 접근의 프로세스를 나타내는 다이어그램입니다:
이 다이어그램은 옵셔널 체이닝을 사용할 때 어떤 과정을 거치는지 명확하게 보여줍니다. 옵셔널 값이 nil
이 아니라면 서브스크립트 호출이 이루어지고, 호출이 성공하면 래핑된 값이 반환되며, 실패하면 nil
이 반환됩니다. 이런 과정을 통해 옵셔널 값을 안전하게 처리할 수 있게 되는 것이죠.