Ann*_*ara 2 function ios swift
我很困惑,因为我习惯于通过这样的函数来获取var:
class ViewController: UIViewController {
var timerVal:Int = calcolo()
func calcolo() -> Int {
return 0;
}
}
Run Code Online (Sandbox Code Playgroud)
但它不起作用.问题是:在调用中缺少参数#1的参数.
问题是这timerVal是一个实例属性,calcolo是一个实例方法。不能在实例属性的默认值中直接调用实例方法,因为在将默认值分配给实例方法的时候,还没有实例!实例正是您正在创建的实例。
如果您打算编写计算属性,则语法如下所示:
var timerVal:Int {
return 0
}
Run Code Online (Sandbox Code Playgroud)
如果您打算编写一个计算默认值的属性,则语法如下所示:
var timerVal:Int = {
return 0
}()
Run Code Online (Sandbox Code Playgroud)
或者您可以声明实例属性lazy,以便在初始化时实例确实存在。
或者您可以将 的声明calcolo向上移动到文件的顶层,在那里它不再是一个实例方法而是一个全局方法。现在您可以在初始化程序中调用它。
有两个问题:
selfself,因为self在初始化所有属性之前,该属性不可用要解决此问题,您可以将属性声明为lazy- 它将在第一次访问时初始化,因此在实例初始化之后:
lazy var timerVal:Int = self.calcolo()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1855 次 |
| 最近记录: |