LoginSignup
0
1

More than 1 year has passed since last update.

Swiftのinit(イニシャライザ)のオーバーロードはconvenienceで行う

Posted at

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()
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1