我想检查 smallestArr
是否包含 -1,如果它至少包含一个 -1,则调用 placeBlocks。我需要继续调用 placeBlocks 直到数组填满,这意味着他们输掉了比赛。
我收到的错误是
Cannot convert value of type 'Int' to expected argument type '@noescape (Int?) throws -> Bool'
var smallestArr = [Int?](count: 25, repeatedValue: -1)
while smallestArr.contains(-1){
placeBlocks()
}
最佳答案
尝试将 [Int?]
更改为 [Int]
(非可选数组成员)
var smallestArr = [Int](count: 25, repeatedValue: -1)
while (smallestArr.contains(-1)) {
placeBlocks()
}
请注意 karthik:s 来自 SO 线程的回答 How do you check an array to see if it contains a nil value?建议您改用 -1
而不是 nil
作为“非赋值”。如果您使用该方法,则没有理由将 smallestArr
设为可选:使用 [Int]
而不是 [Int?]
。
题外话:另请注意,在其当前形式中,此闭包可能会以无限循环结束(因此也许 smallestArr
应该传递给 peaceBlocks 以可能翻转 -1
条目到其他值?)。
关于arrays - 无法将类型 'Int' 的值转换为预期的参数类型 '@noescape (Int?) throws -> Bool',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34428564/