Подтвердить что ты не робот

Являются ли ++ и + = 1 точно такими же?

Я просто переключаюсь на Swift на пару дней, и я замечаю, что postfix и prefix ++ и - будут удалены в Swift 3. Я провел некоторое исследование и, согласно объявлению на веб-сайте Swift, оператор ++ и - будет заменено на + = 1 и - = 1. Ссылка здесь Новые функции в Swift 2.2

У меня есть часть кода, которая отлично работает со старой версией Swift. Когда я перехожу от return counter1++, который является моим исходным кодом на return counter1 += 1, и появляется сообщение об ошибке

Нет '+ =' кандидатов вызывают ожидаемый контекстный тип 'Int'

Вот мой пример

func countingCounter() -> (() -> Int){
    var counter1 = 0
    let incrementCounter1: () -> Int = {
        return counter1+=1   //original is counter1++
    }
return incrementCounter1
}

Я попытался это исправить, но все равно застрял.

4b9b3361

Ответ 1

Как сказано в моем комментарии, вот как вам нужно написать его сейчас, чтобы заменить постфикc++. Другим способом было бы использовать промежуточную переменную, если вам не нравится вещь -1.

let incrementCounter1: () -> Int = {
    counter1+=1   //original is counter1++
    return counter1-1;
}

Ответ 3

Нет, они не идентичны, ++ и - increment (или декремент) и return, + = и - = добавляют (или вычитают) сумму в простой для чтения короткой форме, но они не возвращаются что-нибудь.

Итак, вам нужно отделить изменение значения от использования значения. В этом и заключается суть устаревания - чтобы ваш код стал легче читать и поддерживать.

Ответ 4

Нет, они не идентичны, вам нужно сначала увеличить, а затем вернуть значение. Попробуйте это.

func countingCounter() -> (() -> Int){
    var counter1 = 0
    let incrementCounter1: () -> Int = {
        counter1 += 1
        return counter1
    }
    return incrementCounter1
}