Кто-нибудь наткнулся на это?C-style for statement устарел и будет удален в будущем
У меня есть хорошая маленькая петля, но, похоже, она получает предупреждение.
for(;;nimages++)
Кто-нибудь наткнулся на это?C-style for statement устарел и будет удален в будущем
У меня есть хорошая маленькая петля, но, похоже, она получает предупреждение.
for(;;nimages++)
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
также может быть уместным.
В чем вопрос? Сообщение Вся ошибка
C-стиль заявление является устаревшим и будет удален в будущей версии Swift
Вы могли бы заменить это чем-то вроде
while true {
// loop body
nimages += 1
}
Наконец , если вы знаете количество итераций, которые вы хотите, вы можете использовать цикл for-in:
for nimages in 0..<maxImages { /* loop body */ }
Извините, вопрос: замените его на что? –
Я слишком скоро нахожусь в [return] :) – nielsbot
Я хочу отсчитать, но swift не принимает idx в count-1..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 Операторы
Оператор полуоткрытого Диапазона (а .. < б) определяет диапазон, который работает от а до Ь, но не включает в себя б.
Для 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 {
}
"хорошо"? Этот цикл будет плохим кодом на всех языках, которые я знаю. Это работает, но это не приятно. – Sulthan
Было предложено и принято решение удалить операторы ++ и - с языка 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 –
@DerekLee вы можете ответить на вопрос, чтобы я можете принять ваш ответ, пожалуйста? –