使用self属性了解变异函数

时间:2014-09-09 14:06:03

标签: ios macos swift

我正在使用Apple的Swift编程语言书,并且遇到了以下示例。我想在继续之前确保我的概念正确。

struct Point {
    var x = 0.0, y = 0.0
    mutating func moveByX(deltaX: Double, deltaY: Double) {
        self = Point(x: x + deltaX, y: y + deltaY)
    }
}

该书指出" moveByX函数创建了一个全新的结构,其x和y值是指向目标位置。"

所以,如果我这样做;

var myPoint = Point(x: 1, y: 1)
myPoint.moveByX(2, deltaY: 2)

我的理解是Swift从内存中释放值为1,1的myPoint结构,并且它不再可用。在它的位置创建一个值为3的新的。我是对的吗?

1 个答案:

答案 0 :(得分:1)

准确地说,值1和1被3替换。内存中的位置在两种情况下都是相同的,并且在分配特定实例时分配。