我正在阅读 Apple 的 Swift Programming Language 一书,并遇到了以下示例。在继续之前,我想确保我的概念是正确的。
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、3 创建了一个新的。我说得对吗?
最佳答案
准确地说,值 1 和 1 被 3、3 替换。在这两种情况下,内存中的位置是相同的,并且在分配特定实例时分配。
关于ios - 了解具有 self 属性的变异函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25746703/