initのオーバーロード
Swiftでのinit(イニシャライザ)のオーバーロードはほかの言語とは子なり、少し特殊です。
Swiftではconvenience
を使用することで、オーバーロードが可能です。
class Alert {
var title : String
var message : String
var level : Int
init(title : String, message : String, level : Int) {
self.title = title
self.message = message
self.level = level
}
convenience init(title: String) {
let message = "デフォルト"
let level = 0
self.init(title : title, message : message, level : level)
}
convenience init(message: String) {
let title = "デフォルト"
let level = 0
self.init(title : title, message : message, level : level)
}
func show() {
print("\(self.title) \(self.message) \(self.level)")
}
}
let alert1 = Alert(title: "title", message : "Hello", level : 1)
let alert2 = Alert(title: "タイトル")
let alert3 = Alert(message : "メッセージ")
alert1.show()
alert2.show()
alert3.show()