Swift 切换范围
Swift switch with range
我有一个 Int
的 Array
并且想找到每个实例所在的范围。
let array: [Int] = [35,34,33,32,31,30,28,27,26,25,24,23,7,6,5,4,3,2,1]
我还有一个 Array
of Tuple's
of 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
令我惊讶的是您完全 运行 代码。在我的 Xcode 7.1 中,它给出了 运行 时间错误:
fatal error: Can't form Range with end < start
...因为您的元组是 (end, start)
形式,而不是相反的形式。
如果你想找到 array
中的每个项目属于哪个范围,试试这个:
for a in array {
if let range = (tupleArray.filter { [=11=].1 <= a && a <= [=11=].0 }).first {
print("\(a) is within \(range)")
} else {
print("Cannot find a range for \(a)")
}
}
我有一个 Int
的 Array
并且想找到每个实例所在的范围。
let array: [Int] = [35,34,33,32,31,30,28,27,26,25,24,23,7,6,5,4,3,2,1]
我还有一个 Array
of Tuple's
of 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
令我惊讶的是您完全 运行 代码。在我的 Xcode 7.1 中,它给出了 运行 时间错误:
fatal error: Can't form Range with end < start
...因为您的元组是 (end, start)
形式,而不是相反的形式。
如果你想找到 array
中的每个项目属于哪个范围,试试这个:
for a in array {
if let range = (tupleArray.filter { [=11=].1 <= a && a <= [=11=].0 }).first {
print("\(a) is within \(range)")
} else {
print("Cannot find a range for \(a)")
}
}