我在快速语言中混淆了结构与类

时间:2019-04-07 12:20:25

标签: swift class struct

我对结构与类感到困惑。我看过这个例子根据这个例子https://www.codeply.com/go/76fzFtggt2根据链接可能是代码输出为 15,15,15,20

BUT代码输出为 因为结构未更改,但是当我在Xcode上运行代码时,它会返回 15,15,20,20

class objectmanagement
{
    public var x : Int = 10;

    func display()
    {
        print("\(x)")
    }
}



struct StuctManagement{
    var obj = objectmanagement()
}


let SA = StuctManagement()
SA.obj.x = 15

var SB = StuctManagement()
SB.obj = SA.obj

SA.obj.display()
SB.obj.display()

SB.obj.x = 20


SA.obj.display()
SB.obj.display()

我很困惑,请帮助我理解与类输出相同的输出

1 个答案:

答案 0 :(得分:1)

快速class是引用类型。 (请参阅here

当你说:

SB.obj = SA.obj

这意味着SA的对象是SB中的确切对象。 (SA.obj和SB.obj有一个指针)

尽管

let SB = SA

复制SA并创建具有不同引用的SB。