140 votes

Les opérateurs ++ et - sont déconseillés Xcode 7.3

Je regarde les notes Xcode 7.3 et je remarque ce problème.

Les opérateurs ++ et - sont obsolètes

Quelqu'un pourrait-il expliquer pourquoi il est déconseillé? Et ai-je raison de penser que dans la nouvelle version de Xcode, vous allez maintenant utiliser au lieu de ++ ce x += 1 ;

Exemple:

 for var index = 0; index < 3; index += 1 {
    print("index is \(index)")
}
 

216voto

Zoff Dino Points 5010

Une explication complète ici de Chris Lattner, Swift du créateur. Je vais résumer les points:

  1. C'est une autre fonction que vous avez à apprendre à apprendre tout en Swift
  2. Pas beaucoup plus courte que l' x += 1
  3. Swift n'est pas C. Ne pas les porter tout pour plaire programmeurs C
  4. Son utilisation principale est de style C pour la boucle: for i = 0; i < n; i++ { ... }, ce qui Swift a de meilleures alternatives, comme for i in 0..<n { ... } (C-style de boucle est de sortir aussi)
  5. Peut être difficile à lire et à maintenir, par exemple, quelle est la valeur de x - ++x ou foo(++x, x++)?
  6. Chris Lattner ne l'aime pas.

39voto

0101 Points 1057

Je me rends compte que ce commentaire ne répond pas à la question, mais il se peut que des personnes recherchent une solution pour que ces opérateurs restent actifs et une telle solution peut être trouvée dans la partie inférieure.

22voto

Sohil R. Memon Points 2897

Apple a supprimé l' ++ et il sera beaucoup plus simple avec l'autre de façon traditionnelle.

Au lieu de ++, vous devez écrire +=.

Exemple:

var x = 1

//Increment
x += 1 //Means x = x + 1 

De même, pour l'opérateur de décrémentation --, vous devez écrire -=

Exemple:

var x = 1

//Increment
x -= 1 //Means x = x - 1

Pour for boucles:

Incrément Exemple:

Au lieu de

for var index = 0; index < 3; index ++ {
    print("index is \(index)")
}

Vous pouvez écrire:

//Example 1
for index in 0..<3 {
    print("index is \(index)")
}

//Example 2
for index in 0..<someArray.count {
    print("index is \(index)")
}

//Example 3
for index in 0...(someArray.count - 1) {
    print("index is \(index)")
}

Décrémenter Exemple:

for var index = 3; index >= 0; --index {
   print(index)
}

Vous pouvez écrire:

for index in 3.stride(to: 1, by: -1) {
   print(index)
}
//prints 3, 2

for index in 3.stride(through: 1, by: -1) {
   print(index)
}
//prints 3, 2, 1

for index in (0 ..< 3).reverse() {
   print(index)
}

for index in (0 ... 3).reverse() {
   print(index)
}

Espérons que cette aide!

7voto

Jay Mehta Points 128

Chris Lattner est allé à la guerre contre ++ et --. Il écrit, "le Code qui utilise en fait le résultat de la valeur de ces opérateurs est souvent source de confusion et subtile, un lecteur/responsable de code. Ils encouragent "exagérément difficile" le code qui peut être mignon, mais difficile à comprendre....Alors que Swift a bien défini l'ordre de l'évaluation, tout code qui en dépendait (comme foo(++a, a++)) ne serait pas souhaitable, même si elle a été bien défini...ces échec de la métrique de "si nous ne l'avons pas déjà ces, pourrions-nous ajouter à Swift 3?""

Apple a voulu garder swift propre, clair, sans confusion et straight-to-the-point de la langue. Et donc ils obsolète ++ et -- mot-clé.

4voto

Dániel Nagy Points 5768

À partir de la docs:

Le pas d'incrémentation/décrémentation les opérateurs de Swift ont été ajoutés très tôt dans le développement de Swift, comme un report de C. ils ont été ajoutés sans beaucoup de considération, et n'ont pas été pensé depuis alors. Ce document propose un regard neuf sur eux, et, finalement, nous recommande de tout simplement supprimer entièrement, car ils sont source de confusion et ne pas mener leur poids.

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