Xcode Swift如果语句不起作用。很明显是个错误,但模式是什么

Xcode Swift如果语句不起作用。很明显是个错误,但模式是什么,xcode,swift,if-statement,Xcode,Swift,If Statement,我在一个应用程序中有以下代码片段。未正确计算“if”语句。即使score=-100和bestScore=200,if语句if score

我在一个应用程序中有以下代码片段。未正确计算“if”语句。即使score=-100和bestScore=200,if语句if score 如果我在If中添加print语句,它会突然开始工作。我在没有打印声明的操场上试过,效果很好。为了简单起见,我用“true”替换了一些表达式

        var bestScore = 200
        var score = 200
        if true {
            if true {
                score = -100
            } 
        }
        if score < bestScore {
            print("Testing") // When this wasn't here it wasn't working
            bestScore = score
            bestMove = move
        }
var最佳得分=200
风险值得分=200
如果是真的{
如果是真的{
分数=-100
} 
}
如果得分<最佳得分{
打印(“测试”)//当这不在这里时,它就不工作了
最佳分数
最佳移动=移动
}
我以前在Swift中见过这种奇怪的行为,很少,但我无法找到一种模式来解释这种情况何时发生。这与Xcode 6.1.1(6A2008a)是一致的


编辑:我再也不能用Xcode 6.2 beta 5重现这个错误了,所以我认为这已经被纠正了。

它看起来很像我经历过的事情。 虽然情况不同,但它确实涉及到在print语句之后分配属性,如果print语句不在那里,则不会发生这种情况。长话短说,这是一个bug,我向苹果发送了一份关于它的报告,该报告仍在调查中


这很聪明。您的代码中有一个无法解释的bug,然后发布一些修改过的代码。张贴原件。只要你不接受错误存在于你的代码中,你就找不到它。因为你没有发布任何可复制的东西,任何人都很难有更多的话要说……你有没有一个不起作用的例子,而不是一个在你未发布的项目中起作用但不起作用的例子?我看到过一些例子,优化器确实省略了它不应该有的代码,因为它有副作用,但这些代码总是可以在一小段独立的示例代码中重现,您可以使用
swiftc
@gnasher729编译,这就是重点。问题是,什么样的代码模式会导致Swift编译器被if语句弄糊涂。我没有更改变量的值,也没有更改失败的if语句。我指出了一行是谁的加法使它工作的。添加打印如何修复if语句的计算?我想我不应该在这里问关于苹果病毒的问题。我在Xcode 6.2 beta 5中尝试了相同的代码,但没有打印,所以我假设这个特定的编译器场景已经修复。