2017-08-25 41 views
0

有沒有一種乾淨的方式來表達Swift中向前和向後可迭代範圍?如何在Swift中表示向前或向後範圍?

let range = forward ? (x+1)..<count : (0..<x).reversed() 

for i in range { 
    // ... 
} 

這不起作用,因爲CountableRange和ReversedRandomAccessCollection <(CountableRange)>不兼容。

回答

2

您需要使用橡皮擦。標準庫提供AnyCollection,這只是訣竅:

let range = forward ? AnyCollection((x+1)..<count) : AnyCollection((0..<x).reversed()) 

for i in range { 
    // ... 
}