我是用 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/