2016-02-15 35 views
3

任何人都遇到過這個?C-style for語句已被棄用,將來會被刪除

我有一個很好的小循環,但它似乎得到一個警告。

for(;;nimages++) 
+4

「好」?那個循環在我認識的每種語言中都是錯誤的代碼。它的工作原理,但它不是很好。 – Sulthan

+3

在即將發佈的版本中,建議並接受從Swift語言中刪除++和 - 運算符。有關完整的解釋,您可以參考以下鏈接:https://github.com/apple/swift-evolution/blob/master/proposals/0004-remove-pre-post-inc-decrement.md C樣式循環也將在不久的將來會被棄用:https://github.com/apple/swift-evolution/blob/master/proposals/0007-remove-c-style-for-loops.md –

+0

@DerekLee你可以回答這個問題,所以我可以接受你的答案嗎? –

回答

3

It was proposed and accepted to remove the ++ and -- operators from the Swift language in an upcoming release,因此您看到的警告是幫助您避免代碼在移除之前存在於這些類型的結構中。 (請參考鏈接更全面的解釋,以及優點和缺點,他們提供。)

請注意,C型環也將在不久的將來棄用根據以下建議:https://github.com/apple/swift-evolution/blob/master/proposals/0007-remove-c-style-for-loops.md

不知道你需要實現什麼樣的邏輯我不覺得有信心推薦一個解決方案,但是根據上述建議,我建議你可能想要熟悉Swift for-instride陳述。或者,如另一個人推薦的那樣,使用while循環也可能是合適的。

2

什麼問題?整個錯誤消息是

C風格的聲明已被棄用,將在 斯威夫特

將來的版本中刪除你可以像

while true { 
    // loop body 
    nimages += 1 
} 

最後的東西替換此,如果您知道所需的迭代次數,則可以使用for-in循環:

for nimages in 0..<maxImages { /* loop body */ } 
+0

對不起,問題是:用什麼取代它? –

+0

我很快就打了[return] :) – nielsbot

+0

我想倒計數,但swift不接受count-1..0中的idx,這在「棄用」版本中很容易支持。你知道一個辦法嗎? –

0

C Style For loops are deprecatedincrementing decrementing like these i++ , i-- also deprecated

因此不能使用這種類型的循環再

let myArray = ["one","two","three","four","five","six"] 

for var i = 0; i < myArray.count; i++ { 
    print(myArray[i]) 
} 

而是上面的語法使用的,我們可以用這個

let myArray = ["one","two","three","four","five","six"] 

for i in 0..<myArray.count { 
    print(myArray[i]) 
} 

而此

for i in 0...myArray.count-1 { 
    print(myArray[i]) 
} 

如果你不熟悉範圍運營商半開區間運營商這是時間 (Document Link)

範圍運營商

封閉的範圍操作符( a ... b)定義從a到b的範圍,幷包括值a和b。 a的值不得大於b。

半開區間算

的半開區間操作者(.. < b)中限定了從一個運行至b的範圍內,但不包括b-。

0

對於index--風格

for index in 10.stride(to: 0, by: -1) { 
     print(index)//This is 10, 9, 8, ... 1 NOT 0 
    } 

index++風格

for index in 0..<10 { 
} 
相關問題