我写的很快,我是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.为什么会发生这种情况,我该如何解决呢。
答案 0 :(得分:3)
这是dis().run()
:
dis()
使用默认构造函数创建并返回“dis”对象:所有实例变量都设置为其初始值
值,在您的情况下dist
设置为零。run()
方法。该方法增加了
list
的值为1,但现在...... 下一次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
答案 1 :(得分:0)
要解决此问题:您只需要让该函数返回增量编号,每次创建新的 dis()时,计数器都会返回零。 试试这个:
created_date