[英]Swift concatenate two Ranges
我有兩個范圍:
let r1: Range<Int> = 1...3
let r2: Range<Int> = 10...12
是否有一種Swift方式來連接/連接兩個范圍,以便我可以在一個for
循環中迭代它們兩個?
for i in joined_r1_and_r2 {
print(i)
}
結果如下:
1
2
3
10
11
12
您可以創建一個嵌套數組,然后加入它們。
// swift 3:
for i in [r1, r2].joined() {
print(i)
}
FlattenBidirectionalCollection
joined()
結果是FlattenBidirectionalCollection
,這意味着它不會分配另一個數組。
(如果您遇到Swift 2,請使用.flatten()
而不是.joined()
。)
這是一種方法:
let r1 = 1...3
let r2 = 10...12
for i in Array(r1) + Array(r2) {
print(i)
}
您必須將它們轉換為另一個結構,因為范圍必須是連續的。
一種可能的方式:
let r1: Range<Int> = 1...3
let r2: Range<Int> = 10...12
for i in ([r1, r2].joinWithSeparator([])) {
print(i)
}
有多種方法可以實現相同的目標,我已經使用了一個可以輕松擴展到更多范圍的方法。 flatten
的kennytm的回答是一個更好的選擇。
當然,你也可以簡單地重復一個嵌套for
:
for r in [r1, r2] {
for i in r {
print(i)
}
}
另一種選擇是:
var combined = [Int]
combined.append(contentsOf: 1...3)
combined.append(contentsOf: 10...12)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.