2016-02-15 5 views
3

Кто-нибудь наткнулся на это?C-style for statement устарел и будет удален в будущем

У меня есть хорошая маленькая петля, но, похоже, она получает предупреждение.

for(;;nimages++) 
+4

"хорошо"? Этот цикл будет плохим кодом на всех языках, которые я знаю. Это работает, но это не приятно. – Sulthan

+3

Было предложено и принято решение удалить операторы ++ и - с языка Swift в следующем выпуске. Для полного объяснения вы можете ссылаться на следующую ссылку: https://github.com/apple/swift-evolution/blob/master/proposals/0004-remove-pre-post-inc-decrement.md Циклы C-Style также будут быть устаревшим в ближайшем будущем: 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-Style также устареют в ближайшем будущем в соответствии со следующим предложением: https://github.com/apple/swift-evolution/blob/master/proposals/0007-remove-c-style-for-loops.md

Не зная точно, какую логику вам нужно реализовать, я не уверен, что рекомендую решение, однако в соответствии с вышеуказанными предложениями я бы рекомендовал вам ознакомиться с операциями Swift for-in и stride. Или, как рекомендовал другой человек, использование петли while также может быть уместным.

2

В чем вопрос? Сообщение Вся ошибка

C-стиль заявление является устаревшим и будет удален в будущей версии Swift

Вы могли бы заменить это чем-то вроде

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

Наконец , если вы знаете количество итераций, которые вы хотите, вы можете использовать цикл for-in:

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

Извините, вопрос: замените его на что? –

+0

Я слишком скоро нахожусь в [return] :) – nielsbot

+0

Я хочу отсчитать, но swift не принимает idx в count-1..0, который легко поддерживается в «устаревшей» версии. Вы знаете, как это сделать? –

0

C Style For loops are deprecated и incrementing 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]) 
} 

Если вы не знакомы с Range операторов и Half-Open Range Операторы это время (Document Link)

Диапазон Операторы

Оператор замкнутый диапазон (a ... b) определяет диапазон, который исходит от a до b, и включает значения a и b. Значение a не должно быть больше b.

Half-Open Range Операторы

Оператор полуоткрытого Диапазона (а .. < б) определяет диапазон, который работает от а до Ь, но не включает в себя б.

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 { 
} 
Смежные вопросы