2016-01-27 1 views

答えて

21

ここでは、より簡単で(よりスウィーティな)アプローチです。

for i in (0 ..< 5).reversed() { 
    print(i) // 4,3,2,1,0 
} 

let array = ["a", "b", "c", "d", "e"] 
for element in array.reversed() { 
    print(element) // e,d,c,b,a 
} 

array.reversed().forEach { print($0) } // e,d,c,b,a 

print(Array(array.reversed())) // e,d,c,b,a 
45

Cスタイルは、固定増減とループstride() によって置き換えることができる。

for index in 10.stride(to: 0, by: -1) { 
    print(index) 
} 

// 10 9 8 7 6 5 4 3 2 1 

使用stride(to: ...)又はstride(through: ...)最後の要素が含まれるかしなければならない かどうかに応じ。

Swift 3の構文が変更されました( this answerを参照)。 whileループ

10.stride(through: 0, by: -1).forEach { print($0) } 

またはクラシック:

9

あなたはstrideメソッドを使用することができます。 swift 3.0から

15

、Strideable上stride(to:by:)方法はフリー機能に置き換えられている、stride(from:to:by:)

for index in stride(from: 10, to: 0, by: -1){ 
     print(index) 
} 
+1

これはSwift 1にあった方法です。もう何歳ですか? –

+2

古典的なCスタイルのループを維持するだけではなく、ホイールを再発明するようなものです。 – DeividKamui

1

それでもこのCスタイルのループを使用したい場合は、ここでは何が必要です:

let x = 10 

infix operator ..> { associativity left } 
func ..>(left: Int, right: Int) -> StrideTo<Int> { 
    return stride(from: left, to: right, by: -1) 
} 

for i in x..>0 { 
    print(i) 
}