Failable initializer
작성일
Failable initializer
기본
init?(parameters) {
initialization
}
init!(parameters) {
initialization
}
활용
struct Position {
let x: Double
let y: Double
init?(x: Double, y: Double) {
guard x >= 0.0, y >= 0.0 else { return nil }
self.x = x
self.y = y
}
init!(value: Double) {
guard value >= 0.0 else { return nil }
self.x = value
self.y = value
}
}
//올바르게 생성된다
var a = Position(x:12, y: 35)
a = Position(x: -12, y: 0) // nil을 리턴한다
var b = Position(value: 12) //정상적으로 작동한다
b = Position(value: -12) //nil을 리턴한다 초기화에 실패 errer가 발생함.