Swift错误:找不到'&&';它接受提供的参数
我一直在为斯威夫特编写一些教程。我遇到了一个TictaToe教程,我正试图使用Xcode 6 Beta 6编写该教程。在检查字典中的值时,出现以下错误:找不到接受所提供参数的“&&”的重载。这是我的密码Swift错误:找不到'&&';它接受提供的参数,swift,xcode6-beta6,Swift,Xcode6 Beta6,我一直在为斯威夫特编写一些教程。我遇到了一个TictaToe教程,我正试图使用Xcode 6 Beta 6编写该教程。在检查字典中的值时,出现以下错误:找不到接受所提供参数的“&&”的重载。这是我的密码 var plays = [Int:Int]() var whoWon = ["I":0,"you":1] for (key,value) in whoWon { if ((plays[6] == value && plays[7] == value && pla
var plays = [Int:Int]()
var whoWon = ["I":0,"you":1]
for (key,value) in whoWon {
if ((plays[6] == value && plays[7] == value && plays[8] == value) ||
(plays[3] == value && plays[4] == value && plays[5] == value) ||
(plays[0] == value && plays[1] == value && plays[2] == value) ||
(plays[6] == value && plays[3] == value && plays[0] == value) ||
(plays[7] == value && plays[4] == value && plays[1] == value) ||
(plays[8] == value && plays[5] == value && plays[2] == value) ||
(plays[6] == value && plays[4] == value && plays[2] == value) || // error appears on this line
(plays[8] == value && plays[4] == value && plays[0] == value))
{
userMessage.hidden = false
userMessage.text = "Looks like \(key) won!"
}
如果您在报表导航器中查看完整的编译器输出,那么您将看到 信息 注:表达式过于复杂,无法在合理时间内解决; 把表达式分解成不同的子表达式
它告诉你如何解决这个问题。我也在做同样的教程。 在我看来,有点奇怪,它必须被分解成子表达式,但它做到了,正如我在这里读到的: 这可能是由于Xcode的问题 下面是重写的函数:
func checkForWin() {
var whoWon = ["I": 0, "You": 1]
for (key, value) in whoWon {
var wonA = (plays[1] == value && plays[2] == value && plays[3] == value)
var wonB = (plays[4] == value && plays[5] == value && plays[6] == value)
var wonC = (plays[7] == value && plays[8] == value && plays[9] == value)
var wonD = (plays[1] == value && plays[4] == value && plays[7] == value)
var wonE = (plays[2] == value && plays[5] == value && plays[8] == value)
var wonF = (plays[3] == value && plays[6] == value && plays[9] == value)
var wonG = (plays[1] == value && plays[5] == value && plays[9] == value)
var wonH = (plays[3] == value && plays[5] == value && plays[7] == value)
if(wonA || wonB || wonC || wonD || wonE || wonF || wonG || wonH) {
userMessage.hidden = false
userMessage.text = "Looks like \(key) won!"
resetBtn.hidden = false
done = true
}
}
}
使用括号“将表达式分解为不同的子表达式”。
这在Xcode 6.4中起作用
if (((plays[1] == value) && (plays[2] == value) && (plays[3] == value)) ||
((plays[4] == value) && (plays[5] == value) && (plays[6] == value)) ||
((plays[7] == value) && (plays[8] == value) && (plays[9] == value)) ||
((plays[1] == value) && (plays[4] == value) && (plays[7] == value)) ||
((plays[2] == value) && (plays[5] == value) && (plays[8] == value)) ||
((plays[3] == value) && (plays[6] == value) && (plays[9] == value)) ||
((plays[1] == value) && (plays[5] == value) && (plays[9] == value)) ||
((plays[3] == value) && (plays[5] == value) && (plays[7] == value))) {...}
谢谢我忘记了“问题导航器”选项卡。嘿@Martin R我正在使用同一个教程,我是一个初学者,你如何将它分解为子表达式?如何将某些内容分解为子表达式?为什么
var
而不是let
?(即,won*可以是常量,对吗?…)