2016-04-07 5 views
2

ich eine solche Schleife in meiner app haben:Swift 3: ersetzen c style for-Schleife mit Schwimmerschritt

for var hue = minHue; hue <= maxHue; hue += hueIncrement 
{ 
    let randomizedHue = UIColor.clipHue(
     Random.uniform(ClosedInterval(hue - dispersion, hue + dispersion)) 
    ) 
    colors.append(colorWithHue(randomizedHue)) 
} 

hueIncrement ist float, so dass ich kippe Bereich Operatoren wie folgt verwenden: ..<.

Was ist die beste und sauberste Art, eine solche Schleife in Swift 3 zu implementieren?

+2

so etwas wie 'für den Farbton in (minHue) verwenden. stride (durch: maxHue, nach: hueIncrement) {...} ' –

+1

Du hast recht! Können Sie eine Antwort posten, damit ich diese Frage bitte schließen kann? – kelin

+1

Sie sollten auf keinen Fall For-Schleifen mit Float verwenden, weil die Präzision verloren geht. – gnasher729

Antwort

16

Sie schreiten Funktion stride(through:, by:) für dieses .. so etwas wie

for hue in (minHue).stride(through: maxHue, by: hueIncrement){ 
    // ... 
} 

Von Swift3.0 verwenden können, können Sie stride(from:to:by:) oder stride(from:through:by:) Syntax

for hue in stride(from: minHue, through: maxHue, by: hueIncrement){ 
    //.... 
}