簡體   English   中英

Swift:方便初始化程序 - 在self.init調用之前自我使用

[英]Swift: Convenience initializers - Self used before self.init call

我們在下面的便捷方法上收到以下錯誤:

self.init call之前自我使用

class MyClass {
    var id : Int        
    var desc : String

    init?(id : Int, desc : String) {
        self.id = id
        self.desc = desc
    }

    convenience init?(id : Int?) {
        guard let x = id else {
            return
        }
        self.init(id : x, desc : "Blah")
    }
}

我們如何在Swift中實現這種行為?

正如Leo已經指出的那樣,安撫編譯器的最快方法是在guard語句中返回nil。

convenience init?(id : Int?) {
    guard let x = id else {
        return nil
    }
    self.init(id: x, desc: "Blah")
}

除非有特定原因,否則您也可以避免首先使用可用的初始化程序。 init(id : Int, desc : String)編譯得很好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM