如何在 SWIFT 中返回 var



我很困惑,因为我习惯于通过这样的函数来获取变量:

class ViewController: UIViewController {
  var timerVal:Int = calcolo()
    func calcolo() -> Int {
        return 0;
           }
}

但它不起作用。问题是:调用中缺少参数 #1 的参数。

有 2 个问题:

  • 调用实例方法来初始化属性时,必须显式指定实例,即 self
  • 实例属性不能用直接或间接引用self的语句或表达式进行初始化,因为在初始化所有属性之前self
  • 不可用

要解决此问题,您可以将属性声明为 lazy - 它将在第一次访问时初始化,因此在实例初始化后:

lazy var timerVal:Int = self.calcolo()

问题是timerVal是一个实例属性,calcolo是一个实例方法。不能直接在实例属性的默认值中调用实例方法,因为在将默认值分配给实例方法时,没有实例!该实例正是您正在创建的实例。

如果要编写计算属性,语法如下所示:

var timerVal:Int {
    return 0
}

如果要编写计算默认值的属性,则语法如下所示:

var timerVal:Int = {
    return 0
}()

或者,您可以将实例属性声明为 lazy ,以便在初始化时实例确实存在。

或者,您可以将calcolo声明向上移动到文件的顶层,在该级别,它不再是实例方法,而是全局方法。现在,您可以在初始值设定项中调用它。

最新更新