我有一个Array
Int
,想要查找每个实例的范围。
let array: [Int] = [35,34,33,32,31,30,28,27,26,25,24,23,7,6,5,4,3,2,1]
我有另外Array
Tuple's
Int
let tupleArray: [(Int, Int)] = [(35,30),(28,22), (21,15), (14,8), (7,0)]
我正在使用Switch
来迭代它们。
for a in 0..<array.count {
var iteration: Int = 0
switch array[a] {
case tupleArray[iteration].0...tupleArray[iteration].1:
print("Within Range")
default:
print("Next iteration")
repeat {
iteration++
} while tupleArray[iteration].0 < array[a]
}
}
我的问题是如何才能使它只有一个案例,然后在默认情况下继续前进,直到找到下一个数字落入的范围。当前代码完全可以找到,直到存在超过迭代的间隙。因此,对于35-30和28-23,它工作正常,但后来达到21-15
答案 0 :(得分:1)
我很惊讶您可以运行代码。在我的Xcode 7.1中,它给出了运行时错误:
fatal error: Can't form Range with end < start
...因为你的元组是(end, start)
形式而不是相反。
如果您想查找array
中每个项目所属的范围,请尝试以下操作:
for a in array {
if let range = (tupleArray.filter { $0.1 <= a && a <= $0.0 }).first {
print("\(a) is within \(range)")
} else {
print("Cannot find a range for \(a)")
}
}