2016-03-29 8 views
1

Ich habe schon versucht, diese mit CGFloat und ich bin den folgenden Fehler erhalten:Ersatz für C-Stil Schleife in Swift 2.2 CGFloat

for var min:CGFloat = 0.0; min<=45.0; min = min+value { 

print("\(min)") 
} 
: Kann nicht Schritt mit einer Argumentliste vom Typ ‚(CGFloat CGFloat von)‘ aufrufen

zu:

for min:CGFloat in 0.stride(CGFloat(55.0), by: min+value) { 

    print("\(min)") 
} 
+0

Wie wäre es '(0,0) .stride (55,0, durch: Wert)'? – trojanfoe

+0

Da mein Eintauchen in Swift eher Schulcode als Produktionscode schrieb, konvertierte ich nur in 'while' Schleifen, anstatt mich zu bemühen, die asinine Syntax für ein" richtiges "Swift' for' zu lernen: 'var min: CGFloat = 0.0; while (min <= 45.0) {/*...;*/ min + = Wert; } 'Könnte etwas sein, das in Betracht gezogen werden sollte, wenn das dein Anwendungsfall ist, haha ​​ – abluejelly

+0

ty abluejelly, ich werde das versuchen. – Chris

Antwort

0
import Foundation 

let fromValue = CGFloat(0.0) 
let toValue = CGFloat(10.0) 
let distance = CGFloat(3.3) 


// stride in interval from 0.0 ..< 10.0, with distance 3.3 

let sequence = fromValue.stride(to: toValue, by: distance) 
print(sequence.dynamicType) 
/* 
StrideTo<CGFloat> 
*/ 

// StrideTo conforms to SequenceType protocol, so we can use for-in 
for element in sequence { 
    print("\(element)") 
} 
/* 
0.0 
3.3 
6.3 
9.9 
*/ 
+0

ty, aber ich versuche, einen arithmetischen Operator im Schritt (von: Parameter) zu verwenden, wird das nicht unterstützt? – Chris

+0

@ cmarti1138 mit 'by: min + value' ist nicht das, was Sie beabsichtigt haben. Sie wollen einfach 'by: value'. – trojanfoe

+0

@ cmarti1138 ich habe meine Antwort mit einem Beispiel aktualisiert ... – user3441734

1

Unten ist die letzte Überlast für Schritt. Sie können die Zahl für den Schritt auf CGFloat anwenden.

for min in (0 as CGFloat).stride(to: 55, by: value) { 
    print("\(min)") 
} 

Allerdings gibt stride eine Striable zurück, wenn die for-Schleife beginnt. Der by Wert wird nicht mit der Iteration von for-Schleife aktualisiert. Eine While-Schleife wäre besser für diesen Fall,

var min : CGFloat = 0 

while (min < 55) { 
    print("\(min)") 
    min += value 
}