2016-01-27 9 views

cevap

21

İşte daha kolay (ve daha Swifty) bir yaklaşım.

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 gibi sabit bir artış ile döngüler veya azalış stride() ile ikame edilmiş olabilir:

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

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

kullanımı stride(to: ...) veya stride(through: ...) olup son elemanı dahil edilip edilmeyeceği bağlı olarak değişebilir.

Bu Swift 2 içindir. Sözdizimi Swift 3 için değiştirildi (tekrar), bkz. this answer. döngü sırasında

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

veya klasik:

9

Sen stride yöntemi kullanabilirsiniz. Strideable üzerinde stride(to:by:) yöntem serbest fonksiyonu ile değiştirilmiştir swift 3.0 itibaren

15

, stride(from:to:by:)

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

Bu Swift 1'de olduğu yoldur. Hangi eski yeniden yeniden! –

+2

Neden klasik C-Style döngüsünü tutmuyorsunuz, bu tekerleği yeniden icat etmek gibidir. – DeividKamui

1

hala bu C tarzı döngü kullanmak isterseniz, buraya ne ihtiyaç vardır:

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) 
} 
İlgili konular