Le “++” et “--” les opérateurs ont été dépréciées Xcode 7.3
Je suis en train de regarder Xcode 7.3 notes et j'ai remarqué ce problème.
L' ++ et -- les opérateurs ont été dépréciées
Peut-on expliquer pourquoi c'est déconseillé? Et suis-je en droit que dans la nouvelle version de Xcode maintenant, vous allez utiliser à la place de ++
ce x += 1
;
Exemple:
for var index = 0; index < 3; index += 1 {
print("index is \(index)")
}
Je pense que cette question si hors de la portée de stackoverflow principalement parce que l'ensemble de la proposition est acceptée pour la swift évolution peut être trouvé sur Github, vous pouvez en savoir plus sur le pourquoi de cette proposition github.com/apple/swift-evolution/blob/master/proposals/...
Je suis songe sérieusement à retourner à l'Objective-C. Ce n'est pas la peine d'essayer de suivre tous les changements de Swift.
C'est la chose la pour-boucles de la C-style serait retiré trop, voir ce github.com/Vkt0r/swift-evolution/blob/master/proposals/... de sorte que vous n'avez pas besoin d'utiliser davantage les
Il y a trop de modifications importantes à mon goût. Je suis tout à fait d'améliorations, mais je n'ai pas vraiment envie de passer mon temps à réécrire des parties importantes de mon code à chaque fois un Xcode version vient de sortir.
Je ne suis pas sûr de savoir comment je pourrais être plus clair. Je préfère utiliser Swift, mais je n'ai pas l'impression que c'est assez stable. J'ai beaucoup travaillé avec d'autres langues dans le passé et n'ont jamais rencontré de nombreuses modifications importantes dans une courte période de temps. Je me sens comme Apple veut que nous soyons tous d'adopter Swift, mais ils font qu'il est plus difficile qu'elle ne devrait l'être.
Je suis songe sérieusement à retourner à l'Objective-C. Ce n'est pas la peine d'essayer de suivre tous les changements de Swift.
C'est la chose la pour-boucles de la C-style serait retiré trop, voir ce github.com/Vkt0r/swift-evolution/blob/master/proposals/... de sorte que vous n'avez pas besoin d'utiliser davantage les
++
et --
opérateursIl y a trop de modifications importantes à mon goût. Je suis tout à fait d'améliorations, mais je n'ai pas vraiment envie de passer mon temps à réécrire des parties importantes de mon code à chaque fois un Xcode version vient de sortir.
Je ne suis pas sûr de savoir comment je pourrais être plus clair. Je préfère utiliser Swift, mais je n'ai pas l'impression que c'est assez stable. J'ai beaucoup travaillé avec d'autres langues dans le passé et n'ont jamais rencontré de nombreuses modifications importantes dans une courte période de temps. Je me sens comme Apple veut que nous soyons tous d'adopter Swift, mais ils font qu'il est plus difficile qu'elle ne devrait l'être.
OriginalL'auteur Oleg Gordiichuk | 2016-02-02
Vous devez vous connecter pour publier un commentaire.
Un explication complète ici de Chris Lattner, Swift du créateur. Je vais résumer les points:
x += 1
for i = 0; i < n; i++ { ... }
, Swift a de meilleures alternatives, commefor i in 0..<n { ... }
(C-style de boucle est sortir aussi)x - ++x
oufoo(++x, x++)
?Pour ceux qui sont intéressés (et pour éviter la pourriture des liens), Lattner motifs dans ses propres mots sont:
Point 5: Ceux qui ont toujours été dépendant de l'implémentation en C, et on ne avec un sens ne l'a jamais fait. Il vous suffit de définir le comportement et nous allons en prendre l'habitude. Mieux que d'avoir à revenir en arrière et changer parfaitement bon vieux code pour aucune raison.
J'aime le point 3. Vous ne pouvez pas être enchaîné au contrat d'héritage pour toujours. J'aime le C, mais vous êtes la création d'un nouveau langage de programmation; est logique de commencer avec une ardoise propre, comme vous en avez besoin pour être.
C'est à cause d'apple aime à vous forcer à penser comme ils le font. Je pense que c'est parfaitement bien, et utilisé n'importe où vous avez besoin pour augmenter ou decriment une variable. Ce n'est pas quelque chose que vous "apprendre" vous ferez bien sans elle. Et #5 est juste mal écrit le code, comme je n'ai jamais vu. Par conséquent, #6, il est. Depricating c'est assez pour me faire rayer de ma tête et de faire une recherche google, donc merci pour perdre mon temps Chris.
C'est un argument faible considérant que vous pouvez simplement définir l'opérateur vous-même si vous le voulez vraiment. Il n'a rien à voir avec apple qui veulent les gens à penser comme eux. Il n'a tout simplement pas s'adapter à la langue. Si le
++
n'existent pas en C-style de langues, personne dans leur bon esprit d'examiner la conception de Swift 3.0 et pense qu'un++
opérateur serait une belle addition à elle.OriginalL'auteur Code Different
Je me rends compte que ce commentaire ne répond pas à la question, néanmoins il peut y avoir des gens qui recherchent une solution de comment garder ces opérateurs travail et une solution peut être trouvée dans le fond.
Personnellement, je préfère
++
et--
opérateurs. Je ne peux pas d'accord avec l'opinion qu'ils sont délicats ou difficiles à gérer. Une fois que le développeur comprendre ce que ces opérateurs (et nous parlons assez simple) le code doit être très clair.Dans l'explication pourquoi les opérateurs ont été désapprouvées est mentionné que leur utilisation principale est dans le style C pour les boucles. Je ne sais pas pour les autres mais personnellement, je n'utilisez pas le C-style de boucles à tous et il y a encore beaucoup d'autres endroits ou des situations quand
++
ou--
opérateur est utile.Je voudrais également mentionner que
varName++
renvoie une valeur de sorte qu'il peut être utilisé dans lereturn
alors quevarName += 1
ne peut pas.Pour l'un de vous qui voudraient garder ces opérateurs travaillant voici la solution:
return (x - 1)
pour les opérateurs de suffixe - a mon humble avis, c'est plus propre à entretenir la sémantique qu'ils retournent (une copie de) la valeur d'origine plutôt que ce que vous obtenez si vous nex + 1 - 1
Je n'aime pas non plus mais je ne sais pas à propos des autres (mieux, plus propre) manière de faire. Je ne comprends pas tout votre deuxième point.
Je vois, je ne voulais pas le faire juste pour le plaisir de la création d'une autre variable (ou plutôt constant dans ce cas). Si nous parlons de la
Int
alors seulement le résultat de(x + 1)
seront survolées qui permet d'interrompre l'exécution et, par conséquent,result - 1
ne sera pas de même couru. D'autres types de données commeDouble
par exemple, se comportent toutefois différemment si j'ai besoin d'étudier.Vous pouvez utiliser
defer
pour cela, aussi.defer { x += 1 }; return x
pourquoi ne pas utiliser des génériques et d'écrire quelques lignes?
OriginalL'auteur 0101
Apple a supprimé le
++
et il fait beaucoup plus simple avec l'autre de façon traditionnelle.Au lieu de
++
, vous devez écrire+=
.Exemple:
De même pour l'opérateur de décrémentation
--
, vous devez écrire-=
Exemple:
Pour
for
boucles:Incrément Exemple:
Au lieu de
Vous pouvez écrire:
Décrémenter Exemple:
Vous pouvez écrire:
Espérons que cette aide!
+=
a été là tout le temps.Ouais juste de l'édition avec la meilleure format
Pouvez vous s'il vous plaît vérifier maintenant?
Qu'en est
++i
et--i
?OriginalL'auteur Sohil R. Memon
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++)) 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 voulait garder swift propre, clair, sans confusion et straight-to-the-point de la langue. Et donc ils obsolète ++ et -- mot-clé.
quelque chose comme
...for i in 0.stride(to: 10, by: 2)...
ou...for i in (1...10).reverse()...
est-il propre?!Je suis d'accord. Le "propre" de l'argument est fondamentalement contradictoire wrt pour le reste de Swift. Venant de l'Objective-C, ce qui est objectivement impur, c'est assez difficile à accepter "propre" comme une Pomme, la langue de l'objectif.
Essayer de parser json et swift et me dire comment nettoyer c'est.
OriginalL'auteur Jay Mehta
La
Fix-it feature
de Xcode donne de réponse claire à cette.Remplacer
++ increment operator
à l'anciennevalue += 1
(à court de main de l'opérateur) et-- decrement operator
avecvalue -= 1
OriginalL'auteur Jayprakash Dubey
De la docs:
github.com/apple/swift-evolution/blob/master/proposals/... ici, vous pouvez lire à ce sujet, mais ce n'est pas parce que c'est cher, mais plutôt la langue de conception.
Donc, comme je andersen Swift va tomber soutien de la C-caractéristiques de style
eh bien, je dirais qu'ils veulent soulignent que Swift n'est pas un sur-ensemble de C à la différence Objective-C.
beaucoup de ce que vous avez dit n'a aucun sens du tout. "N'est pas orienté vers des développeurs existant" dans quel sens? De la même manière que Java n'est pas orienté vers les développeurs PHP? "orientée vers ceux qui ne peuvent pas avoir l'envie d'être des développeurs"? Ouais, parce que tous ces non-développeurs il y a de mordre la main avec le protocole de la programmation orientée et les génériques. "Une façon de permettre une bonne conception de la" regardez-la DONC, vous verrez qu'aucun langage de programmation peut "permettre une bonne conception".
OriginalL'auteur Dániel Nagy
Pour Swift 4, vous pouvez restaurer les
++
et--
opérateurs que des extensions pourInt
et d'autres types. Voici un exemple:Il fonctionne de la même manière pour les autres types, tels que
UIInt
,Int8
,Float
,Double
, etc.Vous pouvez coller ces extensions dans un seul fichier dans votre répertoire racine, et ils seront disponibles pour une utilisation à l'intérieur de tous vos autres fichiers.
J'ai remarqué un couple de votes pour ma réponse ici, presque dès que je l'ai posté. Que je prends comme un désaccord philosophique, plutôt que critique de la façon dont mon code fonctionne. Il fonctionne parfaitement, si vous le vérifier dans une aire de jeux.
La raison pour laquelle j'ai posté cette réponse, c'est parce que je suis en désaccord avec le fait de faire de la programmation informatique langues inutilement différents les uns des autres.
Avoir beaucoup de similitudes entre les langues rend easer pour les gens d'apprendre et de passer d'une langue à l'autre.
Développeurs normalement l'utilisation de plusieurs langages de programmation, plutôt qu'une seule. Et c'est une vraie galère de passer d'une langue à l'autre, quand il n'existe pas de conventions et de l'absence de communauté de la normalisation à travers les langues.
Je crois qu'il devrait être syntaxe des différences entre les langues uniquement la quantité nécessaire, et pas plus que cela.
OriginalL'auteur Mike
Ici est une version générique d'une partie du code publié jusqu'à présent. Je voudrais exprimer les mêmes préoccupations que les autres: c'est la meilleure pratique pour pas de les utiliser en Swift. Je suis d'accord que cela pourrait être source de confusion pour ceux qui lisent votre code dans l'avenir.
Cela peut aussi être écrit comme une extension du type Numérique.
OriginalL'auteur Doghound
C'est certainement un inconvénient, à droite?
OriginalL'auteur outcast
i += 1
retourneVoid
, qui est le point le plus important. Donc,++i
eti++
retourVoid
, trop. Ils vont garder le même sens. À ce moment, vous comprendrez que le retrait c'est mieux, juste que Python n'.OriginalL'auteur DawnSong
Dans Swift 4.1 il pourrait être atteint de cette façon:
Avis que, malgré le fait que cette solution similaire aux précédentes solutions dans ce post, ils ne travaillent pas plus rapide 4.1 et cet exemple n'.
Notez également que celui ci-dessus mentionne que += est un remplacement pour l'++, il suffit de ne pas comprendre pleinement l'opérateur ++ est combiné avec d'affectation est en fait deux activités, d'où un raccourci.
Dans mon exemple:
var s = t++
fait deux choses: d'affecter la valeur de t à s et puis incrémenter t. Si l' ++ vient avant, c'est les deux mêmes opérations effectuées dans l'ordre inverse.À mon avis, le raisonnement de Apple au sujet de pourquoi supprimer cet opérateur(mentionné dans les réponses précédentes), n'est pas seulement faux raisonnement, mais en outre, je crois que c'est un mensonge et la vraie raison est qu'ils ne pouvaient pas faire leur compilateur de le gérer. Il leur a donné des problèmes dans les versions précédentes de sorte qu'ils ont abandonné.
La logique de "trop compliqué à comprendre opérateur, donc à l'écart" est évidemment un mensonge parce que Swift contient des opérateurs beaucoup plus compliqué et beaucoup moins utiles qui n'ont pas été supprimés. Aussi, la grande majorité des langages de programmation.
JavaScript, C, C#, Java, C++ et bien d'autres. Les programmeurs heureux de l'utiliser.
Qui il est trop difficile de comprendre cette opérateur de, elles et elles seules devraient faire l' += (ou peut-être s = s + 1 si += est trop complexé).
La stratégie derrière Swift est simple: Apple estime que le programmeur est muet, et, par conséquent, doit être traitée en conséquence.
La vérité est que Swift, lancé en septembre 2014 était censé être ailleurs maintenant. D'autres langues ont augmenté beaucoup plus vite.
Que je puisse les énumérer beaucoup de grosses erreurs dans la langue, à partir de sérieux: comme les tableaux collés par valeur et non par référence à gênants: des paramètres variants. les fonctions peuvent pas accepter un tableau qui est l'idée derrière elle.
Je ne pense pas que les employés d'Apple sont même pas autorisés à regarder les autres langages tels que Java, afin qu'ils ne savent même pas qu'Apple est à des années lumières derrière. Apple pourrait avoir adopté Java en tant que langage, mais ces jours-ci, le défi n'est pas la technologie, mais l'ego est.
S'ils ont ouvert IntelliJ pour écrire du Java, ils seraient pour vous de fermer leur compréhension des affaires, qui, à ce point, ils ne peuvent pas et ne rattrapera jamais.
OriginalL'auteur Elad Lavi