我想检查smallestArr
是否包含-1,如果它包含至少一个-1,则调用placeBlocks。我需要继续调用placeBlocks,直到数组填满意味着他们输掉了比赛。
我收到的错误是
无法将'Int'类型的值转换为预期的参数类型 '@noescape(Int?)抛出 - >布尔“
var smallestArr = [Int?](count: 25, repeatedValue: -1)
while smallestArr.contains(-1){
placeBlocks()
}
答案 0 :(得分:2)
尝试将[Int?]
更改为[Int]
(非可选数组成员)
var smallestArr = [Int](count: 25, repeatedValue: -1)
while (smallestArr.contains(-1)) {
placeBlocks()
}
请注意,来自SO帖子How do you check an array to see if it contains a nil value?的karthik:s答案建议您切换为使用-1
而不是nil
作为“非分配”。如果您使用该方法,则smallestArr
没有理由可选:使用[Int]
而不是[Int?]
。
偏离主题:还要注意,在当前形式中,此闭包可能最终为无限循环(所以也许smallestArr
应该传递给peaceBlocks以便可能将-1
条目转换为其他值? )。