While循环运行太多次

时间:2019-04-15 20:13:54

标签: swift while-loop

我正在用Swift开发游戏模拟,并希望有一个功能可以运行,直到拥有权发生变化为止。

我的while循环几乎可以正常工作,但是似乎运行了太多次。我已经阅读了其他一些问题,似乎无法弄清楚……(我是这个新手!)

var possession = 0

func runPlay() -> String {
// Run play scenario
// If meets criteria for possession change then run following, otherwise leave 'possession' unchanged
    if possession == 0 {
        possession = 1
    }
    else {
        possession = 0
    }
// Return description of the play.
return commentary
}

func runPossession() -> String {
    let possFlag = possession
    repeat {
        runPlay()
    } while possFlag == possession
    return commentary
}

此过程一直进行,但停止一个循环为时已晚。即在拥有权发生变化后,它将运行第一个方案。困惑。

谢谢!

1 个答案:

答案 0 :(得分:0)

尝试这样做:

while possFlag == possession {
    runPlay()
}

您正在做一会儿,首先执行一次传递,然后检查语句,这将导致比您想要的迭代更多的迭代。 您可以在Swift文档中找到有关Control Flow的更多信息。

一个完全不同的选项将摆脱while语句。也许做些“反应性”的事情。例如,您可以检查您拥有的possFlag内的财产是否等于didSet

var possession: Bool = False {
    didSet { 
        if possFlag == possession { 
            // do what you need
        }
}

您将继续进行其余的游戏逻辑。