2016-02-22 16 views
20

removal of the traditional C-style for-loop in Swift 3.0 ile aşağıdakileri nasıl yapabilirim?Bir adımla Swift for-in döngüsünü nasıl yapabilirim?

for i in range(1, max, 2): 
    # Do something 

Ama Swift aralık operatör hiçbir eşdeğer gibi görünüyor:

for i in 1..<max { 
    // Do something 
} 
+2

Benzer soru: http://stackoverflow.com/questions/35032182/swift-c-style-loops-deprecated-decrement-index. –

+0

Bunu görmedim! Bu yanıtı bana yönlendiren [http://stackoverflow.com/questions/32197250/using-stride-in-swift-2-0] adresini buldum. Aradığım sırada (soruyu sormadan önce) eksik olan anahtar kelime "adım" idi - "adım" terimini kullanıyordum ve herhangi bir yararlı sonuç bulamıyordum. Sonra adımı bulduğumda, Erica Sadun'un konuyla ilgili yayınını (http://ericasadun.com/2015/05/21/swift-six-killer-features/) şu anda güncel buldum. –

cevap

59

Swift Python

for (i = 1; i < max; i+=2) { 
    // Do something 
} 

, kontrol için-in akım tablosu isteğe bağlı bir adımdır değeri vardır Bir "adım" için eşanlamlı "adım" - aslında, many common numerical types tarafından uygulanır.

(i = 1; i < max; i+=2) eşdeğerdir: Alternatif olarak

for i in stride(from: 1, to: max, by: 2) { 
    // Do something 
} 

, through varyantı kullanarak, i<=max eşdeğer almak için: stride bir StrideTo/StrideThrough döner

for i in stride(from: 1, through: max, by: 2) { 
    // Do something 
} 

Not bu, uygun Sequence, böylece bir dizi ile yapabileceğiniz her şey, stride () aramasının sonucu ile yapabilirsiniz, forEach, filter, vb.). Örneğin:

stride(from: 1, to: max, by: 2).forEach { i in 
    // Do something 
} 
+1

Kim bilir?! Teşekkürler. – Fattie

+15

hızlı 3'teki global işlevlerini kullanabilirsiniz: (adım: ile: by:) 've' stride (from: to: by:) ' gibi, '' i 'in i' in i (in: 1, to: max, by) : 2) {...} ' –

+3

@MarkoNikolovski lütfen diğer kullanıcıların cevaplarına kod eklemeyin. Onların sözlerini ağzına koymak istemiyoruz. Bunun yerine yeni bir cevap ekleyin. Bu soru kapatıldığından, bağlantılı kopyaya yeni bir cevap ekleyebilirsiniz. – JAL

İlgili konular