2017-02-24 221 views
-1

下面的代碼將打印abc 5次,然後打印1024。據我所知,在任何情況下,「迭代器」是自動聲明的(相當於C(++)/ Java for(int i=1; i<=5; i++))。是否有可能實際上不會自動創建該變量並使用在for之前聲明的變量,以便打印abc 5次然後打印5,從而修改它?修改for循環中的變量

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

循環內'print(i)'的輸出是什麼? – pudility

+0

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

+1

@ZoeCarver您要如何工作?你想用現有的'i',並用1,2,...最終5覆蓋1024#。 – Alexander

回答

1

你可以只重寫for循環這樣一個while循環:

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

將'i'設置爲'1024'然後設爲'1'有什麼意義? – rmaddy

+0

@rmaddy示範。這就是循環會按OP所要求的那樣做。 – DrummerB

3

@ DrummerB的回答作品,但如果你想有一個for ... in循環,這也將正常工作。這是同樣的原理 - 你聲明的變量外循環,並增加它裏面:

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

既然你不引用循環變量,斯威夫特語法建議下劃線。

0

如果你真的想改變使用這樣的循環中的i的值,你可以這樣做:

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

第j將在循環使用嚴格,所以一旦完成,它的值是傾倒。但之前聲明的一個變量(我在你的情況下),可以把它的價值和維護它。