簡體   English   中英

Swift:在init中調用self方法

[英]Swift: Call self method inside init

我想實現這樣的事情:

class A {
    var a, b, c, d: Int

    init() {
        reset()
    }

    func reset() {
        a = 1
        b = 2
        c = 3
        d = 4
    }

    func blablabla() { 
        ...
    }
}

無法編譯,錯誤消息:

初始化之前使用的變量“ self.a”

我必須將代碼從reset()復制到init()

這是缺陷還是有其他解決方法?

不,這不是缺陷,在所有存儲的屬性都已初始化並且調用了超類初始化器(如果有)之前,不能在初始化器中引用self

在您的情況下,在方法中進行初始化並從初始化程序中調用它似乎是合法的,但是不幸的是,它不起作用。

可能的解決方案:

  • 使屬性為可選或隱式解包(不推薦使用,除非您確實需要可選)
  • 在調用reset之前,用假值初始化屬性:

     init() { self.a = 0 self.b = 0 self.c = 0 self.d = 0 reset() } 

    要么

     var a = 0 var b = 0 var c = 0 var d = 0 init() { reset() } 

提供a,b,c和d默認值,尤其是如果您要立即更改它們時。

暫無
暫無

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

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