Swift中的递归类型定义

时间:2016-09-13 11:25:38

标签: swift macos recursion

我遇到了一个非常简单的问题需要解决,我想我可能会遗漏一些东西。

当尝试创建一个递归变量(?)并且作为所述类的成员的类时,程序崩溃。例如:

class A {
    var x: A

    init() {
        x = A()
    }
}

检查崩溃日志会建议排序的递归,init()被无限调用。

是否有适当的方法/语法来解决此类问题,因为我需要将变量x输入到类A,并且初始值设定项必须初始化变量x上课A

2 个答案:

答案 0 :(得分:2)

很明显,在某个步骤中,您应该将属性x保持未初始化状态。因此,最好将其声明为Optional,并在创建实例后对其进行初始化:

class A {
    var x: A?
}

let mainObject = A()
let nestedObject = A()
mainObject.x = nestedObject

答案 1 :(得分:1)

不确定,但我认为你正在寻找这个

class A {
    var x: A?

    init() {
    }

    anothermethod() {
       x = A()
    }
}

你可以像

一样调用这个方法
    let a = A()
    a.anothermethod()