这应该很容易,但我自己很难! 我创建了一个反向For循环来迭代一个集合。 如果集合中有十个数字,那么我可以这样做;
for d in (0..<10).reverse() {
print(d)
}
但是我希望与Int匹配,然后像这样在集合中向后计数;
如果myInt = 7,那么我想将7附加到一个数组(我能做到),但也要追加; 6,5,4,3,2,1,9,8按顺序排列数组。
感谢帮助!
答案 0 :(得分:3)
最简单的方法是将范围拆分为myInt
并使用两次单独的迭代。我可能会用这个:
let range: Range<Int> = 0..<10
let pivot: Int = 7
let result = Array(range.startIndex...pivot).reverse()
+ Array(pivot.successor()..<range.endIndex).reverse() // or "pivot + 1"
print(result) // [7, 6, 5, 4, 3, 2, 1, 0, 9, 8]
如果您不想要0
,请将其从输入range
(1..<10
)中删除。不要为它创造一个额外的条件。
答案 1 :(得分:1)
在这里你得到这样的数组: -
let myInt = 7
var outPutArray : NSMutableArray = []
var tempArray : NSMutableArray = []
for d in (0..<10) {
if myInt-d <= 0
{
if myInt-d != 0
{
tempArray.addObject(d)
}
}else{
outPutArray.addObject(myInt-d)
}
}
outPutArray.addObjectsFromArray(tempArray.reverse())
print(outPutArray)
7, 6, 5, 4, 3, 2, 1, 8, 9
答案 2 :(得分:0)
与@ Sulthan的答案类似,这个使用stride
构建数组:
Swift 2.x:
let (start, end) = (1, 9)
let pivot = 7
let result = Array(pivot.stride(through: start, by: -1)) +
Array(end.stride(to: pivot, by: -1))
print(result)
输出:
[7, 6, 5, 4, 3, 2, 1, 9, 8]
斯威夫特3:
let result = Array(stride(from: pivot, through: start, by: -1)) +
Array(stride(from: end, to: pivot, by: -1))