2017-02-24 9 views
-1

Der folgende Code würde 5 Mal abc drucken und dann 1024 drucken. Soweit ich verstehe, wird in jedem für, der "Iterator" automatisch deklariert (das Äquivalent von C (++)/Java for(int i=1; i<=5; i++)). Ist es möglich, diese Variable tatsächlich nicht automatisch zu erstellen und die vor der for deklarierte zu verwenden, so dass sie abc 5-mal drucken und dann 5 drucken und damit ändern würde?Variable in For-Schleife ändern

var i = 1024 
for i in 1...5 { 
    print("abc") 
} 
print(i) 
+0

Was ist die Ausgabe von 'print (i)' innerhalb der Schleife? – pudility

+0

@ZoeCarver 1, 2, 3, 4, 5 –

+1

@ZoeCarver Wie genau soll das funktionieren? Was willst du mit dem vorhandenen 'i', und überschreibst du das' 1024' mit 1, 2, ... eventuell 5? – Alexander

Antwort

1

Sie könnten nur die neu schreiben for-Schleife als eine while-Schleife wie folgt aus:

var i = 1024 
i = 1 
while i <= 5 { 
    print("abc") 
    i = i+1 
} 
print(i) 
+1

Was ist der Punkt der Einstellung von "i" auf "1024" und dann auf "1"? – rmaddy

+0

@rmaddy Demonstration. Das ist, was eine for-Schleife tun würde, wie OP angefordert hat. – DrummerB

3

@ DrummerB Antwort funktioniert, aber wenn Sie ein für wollen ... in Schleife, das wird auch funktionieren. Es ist das gleiche Prinzip - Ihre Variable außerhalb der Schleife deklarieren und im Inneren erhöhen:

var i:Int = 0 
for _ in 0...5 { 
    print("abc") 
    i += 1 
} 
print(i) 

Da Sie nicht eine Schleifenvariable verweisen, Swift Syntax eines Unterstrichs empfiehlt.

0

Wenn Sie wirklich den Wert des i mit der Schleife auf diese Weise ändern möchten, können Sie tun:

var i=1024 
for j in 1...5 { 
    print("abc") 
    i = j 
} 
print(i) 

Die j streng in der Schleife verwendet werden würde, also einmal abgeschlossen, ist es Wert ist abgeladen. Aber eine Variable, die zuvor deklariert wurde (i in Ihrem Fall), könnte ihren Wert annehmen und beibehalten.