Xcode Swift如果语句不起作用。很明显是个错误,但模式是什么
我在一个应用程序中有以下代码片段。未正确计算“if”语句。即使score=-100和bestScore=200,if语句if scoreXcode Swift如果语句不起作用。很明显是个错误,但模式是什么,xcode,swift,if-statement,Xcode,Swift,If Statement,我在一个应用程序中有以下代码片段。未正确计算“if”语句。即使score=-100和bestScore=200,if语句if score
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中尝试了相同的代码,但没有打印,所以我假设这个特定的编译器场景已经修复。