스위프트강좌 Failable Initializer | Swift 강좌

스위프트강좌 Failable Initializer , 애플의 스위프트 언어에서 클래스 인스턴스 객체를 초기화할 때 Initializer가 이용되는데요. 특정 상황에 원치 않는 값이 들어와 초기화에 실패할 수 있습니다.
Failable Initializer는 문자 그대로 실패할 수 있는 초기화로 해석되며 해당 Initializer의 실패 가능성을 염두에 두고 적용됩니다.

스위프트강좌 Failable Initializer 정의

어떤 특정 범위 바깥의 값들이 인수로 제공될 경우에 때때로 어떤 클래스 인스턴스를 초기화하는데 실패할 경우가 있습니다. 혹은 해당 데이터가 위치해야할 곳에 존재하지 않는 경우가 있습니다.
어떤 Initializer가 어떤 클래스의 인스턴스를 초기화하는데 실패할 가능성이 있을 때 Failable Initializers라고 부릅니다. Failable Initializers는 초기화 후 nil 값을 반환할 수 있습니다.

Failable Initializer 선언 |

init? 형태로 선언합니다.

class 사람 {
    var 성명: String

    init?(성명: String) {
        self.성명 = 성명
        if 성명 == "" {
            return nil
        }
    }
}

위 예제에서 Initializer가 Failable Initializer로 선언되었기 때문에 사람 클래스의 인스턴스를 생성시 인수값에 어떠한 텍스트도 존재하지 않을 경우, nil을 반환하도록 처리했습니다.
단편적인 예제이지만 Failable Initializer가 어떻게 동작하는지 이해하는데 도움이 되시리라 생각됩니다.

Failable Initializer로 초기화된 인스턴스는 Optional이기 때문에 해당 인스턴스의 속성값을 얻기 위해서 Optional Binding 과정을 거쳐야 합니다.

let 무명 = 사람(성명: "홍길동") 

위 결과 무명이라는 인스턴스는 옵셔널 타입이고 이것을 다음과 같이 처리해서 무명의 이름을 얻을 수 있습니다.

if let 무명 = 무명 {
        print("무명씨는 \(무명.성명)을 성명으로 얻었습니다.")
}

반대로 다음처럼 하면 Failable Initializer를 통해 결과가 달라집니다.

let 무명 = 사람(성명: "") 

if let 무명 = 무명 {
    print("무명씨는 \(무명.성명)을 성명으로 얻었습니다.")
}

위의 결과 Failable Initializer에 의해 성명의 인수값이 ""임을 확인하게 되고 그 결과로 nil을 반환합니다.

답글 남기기