Swift:如何通过引用分配一个可选的

标签 swift

给定以下代码:

    class Node {
        var value: Int
        var left: Node?
        var right: Node?
        init (value: Int) {
            self.value = value
        }
    }

root = Node(value: 200)

然后下面的代码给root.left分配了一个新节点:

    var temp1 = root
    temp1!.left = Node(value: 400)

但是下面并没有给root.right分配一个新的节点:

    var temp2 = root!.right
    temp2 = Node(value: 300)

大概在最后一个代码片段中 root!.right 按值分配给 temp2,如果是这样,那么是否有通过引用分配它的方法?

最佳答案

这实际上与可选值无关——如果属性 Node.leftNode.right 不是可选值,则会发生相同的行为。相反,这与 Swift 类属性有关。

在您之前的示例中,您将 temp1 指向 root 指向的同一类实例。因此,roottemp1Node 的同一个实例,因此当您在其中设置一个属性时,当您从其他。

在后一个示例中,您将获取 root!.right 的值(当前为 nil)并将其设置为新变量 temp2。您正在创建一个新的类实例,因此您最终会得到两个单独的类实例。当您分配给 root.right 时,它不会影响 temp2(反之亦然)。

关于Swift:如何通过引用分配一个可选的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31214686/

相关文章:

swift - 单击按钮后更改 label.text

swift - 如何在打印语句中将字符串与计数变量和增量运算符连接起来?

swift - 我可以将多个 Playground 文件放入一个 Xcode 工作簿吗?

ios - 为什么我在这段代码中得到 "Only instance methods can be declared @IBAction"?

ios - 导航栏标题不粗体

swift - 框架+应用+扩展的统一openURL

ios - 如何设置表格 View 单元格占据整个屏幕?

ios - iOS swift 中的错误域=NSCocoaErrorDomain 代码=3840?

ios - NSMutableURLRequest 和参数标签错误

ios - 如何使用 swift 创建一个圆形选项卡?