28 votes

++ et + = 1 sont-ils exactement les mêmes?

Je viens de passer à Swift pour quelques jours et je remarque que le suffixe et préfixe ++ et -- sera supprimée dans Swift 3. J'ai fait quelques recherches et selon l'annonce sur le site web Swift, l'opérateur ++ et -- sera remplacé par += 1 et= 1. Lien ici de Nouvelles Fonctionnalités dans Swift 2.2

J'ai un morceau de code qui fonctionne très bien avec l'ancienne version de Swift. Quand je change d' return counter1++ qui est mon code d'origine pour return counter1 += 1 et un message d'erreur apparaît disant

N '+=' candidats produisent les attendus contextuelle de type "Int"

Voici mon exemple

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

J'ai essayé de faire ce travail, mais toujours bloqué.

18voto

Laffen Points 1959

Il est clairement indiqué dans les documents Apple , copiés ici pour votre commodité:

REMARQUE

Les opérateurs d'affectation composés ne renvoient pas de valeur. Par exemple, vous ne pouvez pas écrire let b = a += 2 .

Non, l'opérateur ++ n'est PAS le même que += .

9voto

Walfrat Points 5032

Comme dit dans mon commentaire, voici comment vous devez l'écrire maintenant pour remplacer le postfix ++. Une autre façon serait d'utiliser une variable intermédiaire si vous n'aimez pas la chose -1.

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

8voto

Wain Points 65967

Non, ils ne sont pas identiques, ++ et - incrémentent (ou décrémentent) et retournent, + = et - = ajoutent (ou soustraient) un montant sous une forme abrégée simple à lire, mais ils ne renvoient rien.

Vous devez donc séparer la modification de valeur de l'utilisation de la valeur. Quel est vraiment le but de la dépréciation - pour rendre votre code plus facile à lire et à maintenir.

1voto

NuttLoose Points 431

Non, ils ne sont pas identiques, vous devez d'abord incrémenter, puis renvoyer la valeur.

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X