理解为什么 swift 代码不能正常工作
understanding why swift code won't work correctly
我是编码新手,目前在 iPad 上使用 swift 个游乐场自学 swift。我的代码运行并完成了拼图,但它继续循环,我不知道为什么。我找不到任何方法来更正此代码。尽管我在 YouTube 上发现了各种代码编写方式不同的视频。我不只是想复制它。我想了解为什么这不起作用。如果需要,我可以发送拼图视频。
while !isOnGem || !isOnClosedSwitch {
moveForward()
if isBlocked && !isBlockedRight {
turnRight()
}
if isBlocked && isBlockedRight {
turnLeft()
}
if isOnGem {
collectGem()
}
if isOnClosedSwitch {
toggleSwitch()
}
}
如果没有关于每个 if
块中函数的任何其他信息,我会说这是由于 isOnGem
和 isOnClosedSwitch
的布尔值所致。如果函数 collectGem()
没有将 isOnGem
的值更改为与初始设置相反的值(true 或 false)并且 toggleSwitch()
没有更改 [=12 的值=] 与它的原始值相反,那么你将陷入循环。由于循环将 运行 "while" 至少其中一个值保持不变。
我相信在各自的 if
块中添加 isOnGem = false
和 isOnClosedSwitch = false
将是解决方案。
您缺少退出条件。只要 任一 条件为 true
,while !isOnGem || !isOnClosedSwitch
就会继续循环,因此您的退出条件将把两个值都设置为 false
。
请注意,两个布尔值在您的检查中都被反转,因此要满足两个条件 false
,您必须将布尔值设置为 true
。
由于您编写了 运行s 但没有退出循环,因此您需要检查对 isOnGem
和 isOnClosedSwitch
的更改,这两个可能是其中之一总是 false
导致循环不退出,或者每次检查后 运行s 的函数可能将它们重置为 false
检查如下代码:
func collectGem(){
...
isOnGem = false
...
}
或者其中一个函数甚至可能没有 运行,您可以像这样记录每个函数:
func toggleSwitch() {
print("toggleSwitchRunning")
}
如果 "toggleSwitchRunning" 没有打印到控制台,请检查将 isOnClosedSwitch
设置为 true
的条件是否正常工作
我是编码新手,目前在 iPad 上使用 swift 个游乐场自学 swift。我的代码运行并完成了拼图,但它继续循环,我不知道为什么。我找不到任何方法来更正此代码。尽管我在 YouTube 上发现了各种代码编写方式不同的视频。我不只是想复制它。我想了解为什么这不起作用。如果需要,我可以发送拼图视频。
while !isOnGem || !isOnClosedSwitch {
moveForward()
if isBlocked && !isBlockedRight {
turnRight()
}
if isBlocked && isBlockedRight {
turnLeft()
}
if isOnGem {
collectGem()
}
if isOnClosedSwitch {
toggleSwitch()
}
}
如果没有关于每个 if
块中函数的任何其他信息,我会说这是由于 isOnGem
和 isOnClosedSwitch
的布尔值所致。如果函数 collectGem()
没有将 isOnGem
的值更改为与初始设置相反的值(true 或 false)并且 toggleSwitch()
没有更改 [=12 的值=] 与它的原始值相反,那么你将陷入循环。由于循环将 运行 "while" 至少其中一个值保持不变。
我相信在各自的 if
块中添加 isOnGem = false
和 isOnClosedSwitch = false
将是解决方案。
您缺少退出条件。只要 任一 条件为 true
,while !isOnGem || !isOnClosedSwitch
就会继续循环,因此您的退出条件将把两个值都设置为 false
。
请注意,两个布尔值在您的检查中都被反转,因此要满足两个条件 false
,您必须将布尔值设置为 true
。
由于您编写了 运行s 但没有退出循环,因此您需要检查对 isOnGem
和 isOnClosedSwitch
的更改,这两个可能是其中之一总是 false
导致循环不退出,或者每次检查后 运行s 的函数可能将它们重置为 false
检查如下代码:
func collectGem(){
...
isOnGem = false
...
}
或者其中一个函数甚至可能没有 运行,您可以像这样记录每个函数:
func toggleSwitch() {
print("toggleSwitchRunning")
}
如果 "toggleSwitchRunning" 没有打印到控制台,请检查将 isOnClosedSwitch
设置为 true
的条件是否正常工作