我不熟悉编程,在了解了一些Python之后我正在学习一些javaScript。我正在使用javaScript来控制移动AR应用程序中的元素,并且我创建了一个非常简单的循环器函数,它完全按照我的要求运行,但老实说,我正在尝试理解为什么它有效!我想要一个在每个水龙头上循环1,2,3的功能。首先点击将返回'1',第二次点击'2',第三点击'3',然后在其他点击上重复此序列。这是我在经过大量试验,错误和谷歌搜索后想出来的:
const cycler = {
current: -1,
cycle: function() {
if (cycler.current == 3) {
cycler.current = 0;
} else {
cycler.current++;
}
console.log(cycler.current);
}
}
cycler.cycle()
cycler.cycle()
cycler.cycle()
cycler.cycle()
cycler.cycle()
在tap事件中,我调用cycler.cycle();它的工作原理......返回1,2,3,1,2,3等。对应于我的水龙头...但我不明白为什么每次点击它都不会返回0。为什么每次调用时都不会将“当前”重置为“-1”?我如何在python中做类似的事情?我怎么想这个?感谢您的任何见解!
你的cycler
是javascript中的对象文字。它有一个属性,current
和一种方法,cycle
。调用该方法不会重新创建该对象,它只是运行该函数。
如您所知,该函数只是递增current
属性的值(除非当前值为3
,当然,在这种情况下,它会将值重置为0
。)
在python中,您可以创建一个创建计数器对象的类。它的构造函数将包含与您在此处创建的对象非常相似的代码。
如果您继续从该类创建新实例并在每个实例上调用.cycle
一次,那么您的日志将包含一堆0
s,正如您所期望的那样。
但是,如果您反复在同一个实例上调用.cycle
,您将获得此处找到的行为。
当在内存中创建对象时,它将初始当前值设置为-1,除非删除对象并在内存中重新创建,否则该值将是您上次设置的值。