gpt4 book ai didi

swift - 为什么我不能从方法更改对象属性

转载 作者:搜寻专家 更新时间:2023-11-01 06:43:52 24 4
gpt4 key购买 nike

我是用 swift 写的,我是 OOP 的新手:

class dis{
var dist = 0
func run(){
dist += 1
}
}

dis().run()
dis().run()
dis().run()
dis().run()
dis().run()
dis().run()

print(dis().dist())

我希望打印 6 但它打印了 0。为什么会发生这种情况,我该如何解决。

最佳答案

这是 dis().run() 中发生的事情:

  • dis() 使用默认构造函数创建并返回一个“dis”对象:所有实例变量都设置为其初始值值,在您的情况下 dist 设置为零。
  • 在此对象上调用了 run() 方法。该方法增加list 的值加一,但现在 ...
  • ...对象被销毁,因为没有对它的引用。

下一个 dis().run() 调用会创建一个对象,依此类推。

最后的 print(dis().dist) 调用再次创建一个新对象(再次将 dist 设置为零)。

您可能想要创建一个对象,保留对它的引用,然后对该对象重复调用 run() 方法:

let d = dis()
d.run()
d.run()
d.run()
d.run()
d.run()
d.run()
print(d.dist) // 6

关于swift - 为什么我不能从方法更改对象属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32644329/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com