gpt4 book ai didi

swift - If语句,在变量递增时满足特定数字的条件

转载 作者:行者123 更新时间:2023-11-28 09:31:33 25 4
gpt4 key购买 nike

我的小脑袋似乎无法解决的简单问题。我有一个变量,它将按顺序更新和递增,即 0、1、2、3、4.. 等等,只是为了清楚起见。我正在尝试实现一个条件,当数字为 1 和 2 时发出哔哔声,而对于 3 和 4 执行此操作,这应该交替进行。让我用代码向您展示。

func doSomething(number : Int) {
//number is increment sequentially: 0, 1, 2, 3, 4...
let number : Int = number
if number is 1, 2, 5, 6, 9, 10... {
//play a sound
} else if number is 3, 4, 7, 8, 11, 12... {
//vibrate
}
}

我关心的不是 if 语句内部发生的事情,而是 if 语句条件中的逻辑。

最佳答案

这里有一个完整的替代方案:不要递增一个数字。不需要数字;他们是一条红鲱鱼。你想要的是每次我们需要一个新 Action 时执行某个“下一步” Action 。因此,让我们编写一个状态机,其中每个连续的状态变化都按照您描述的方式运行。

struct StateMachine {
enum TickTock {
case tick
case tock
}
private var tickTock = TickTock.tock
private var alternator = false
mutating func nextState() {
self.alternator = !self.alternator
if self.alternator {
self.tickTock = self.tickTock == .tick ? .tock : .tick
}
print(self.tickTock)
}
}

因此,您唯一需要做的就是保留一个 StateMachine 实例,并在每次需要执行新操作时调用它的 nextState。这是一个测试及其输出(不要被循环误导;这个故事中没有实际数字,它只是一个测试台):

var machine = StateMachine()
for _ in 0..<20 {
machine.nextState()
}
/*
tick
tick
tock
tock
tick
tick
tock
tock
tick
tick
tock
tock
tick
tick
tock
tock
tick
tick
tock
tock
*/

如果每次我们打印“tick”时您都会发出声音,而每次我们打印“tock”时您都会振动,那么您将完全按照您的规范要求进行操作。

关于swift - If语句,在变量递增时满足特定数字的条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55834496/

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