簡體   English   中英

Swift連接兩個Ranges

[英]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)
}

有多種方法可以實現相同的目標,我已經使用了一個可以輕松擴展到更多范圍的方法。 flattenkennytm的回答是一個更好的選擇。

當然,你也可以簡單地重復一個嵌套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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM