gpt4 book ai didi

arrays - 带范围的快速开关

转载 作者:可可西里 更新时间:2023-11-01 02:18:12 25 4
gpt4 key购买 nike

我有一个 IntArray 并且想找到每个实例所在的范围。

let array: [Int] = [35,34,33,32,31,30,28,27,26,25,24,23,7,6,5,4,3,2,1]

我有另一个 ArrayTuple'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 { $0.1 <= a && a <= $0.0 }).first {
print("\(a) is within \(range)")
} else {
print("Cannot find a range for \(a)")
}
}

关于arrays - 带范围的快速开关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34553270/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com