web-dev-qa-db-fra.com

Est-ce "itérer à travers" ou "itérer sur" quelque chose?

Je viens d'y penser. Existe-t-il une distinction sémantique ou sommes-nous libres de choisir?

EDIT J'ai accepté @roygbivs answer , car la plupart des réponses suggéraient que choisir le choix du goût dépendait du goût. Dans ce cas, étant donné que les à travers et les sur ne portent aucune information (dans ce contexte particulier), elles peuvent être omises.

64
Björn Pollex

"through" et "over" sont des adverbes inutiles.

Exemples:

  • En itérant cette collection, mon code génère une erreur.

  • Ce code itère la collection.

  • Votre tâche consiste à écrire du code qui itère la collection.

C'est comme dire "haut nord" ou "bas sud". "up" et "down" sont inutiles. Au lieu de cela, vous devriez dire: "Je vais au nord pour l'été." ou "Dans le sud, ils cultivent du coton."

69
user113476

Pas juste ou faux, juste quelques statistiques:

= term =           = Google =   = Github =
"iterate over"      1,440,000   10,569,846 search results
"iterate through"     908,000    5,605,973
"iterate thru"         44,200      141,982
——————————————————————————————————————————
"iterate on"          402,000      187,576
"iterate in"           63,300      117,962
"iterate across"       10,900      208,342
"iterate within"        8,470       14,577
"iterate along"         8,060        6,396
"iterate among"         5,970        2,960
"iterate against"       2,580        3,255
"iterate inside"        2,450       35,060
"iterate amongst"         406       22,274
"iterate amidst"           66            0

Statistiques Google mises à jour le 25/04/2018. Les recherches ultérieures montrent que les résultats sont instables.
Statistiques de Github mises à jour le 25/04/2018. Seules les occurrences de code sont comptées .

42
kennytm

Je pense que cela dépend de l'objet de la préposition; vous parcourez l'itérateur, la collection, le conteneur, la liste, etc., mais vous parcourez (le contenu de) la liste, les éléments du conteneur, les éléments de ) la gamme, à travers (les éléments de) la collection, etc. Dans la plupart des cas, ils sont interchangeables; le seul endroit où j'utiliserais le mot "plus" mais pas "de bout en bout" concerne l'itérateur lui-même; mais pour tout objet itérable, j'utiliserais soit "sur", soit "à travers".

17

Je dirais qu'il faut réitérer, et c'est toujours ainsi que je l'ai vu écrit.

15
Cocowalla

Les deux signifient essentiellement la même chose!

Alors, vous êtes libre de choisir celle qui vous convient le mieux.

7
Mahesh Velaga

Je dirais toujours "itérer sur " car il souligne le fait (relativement important) que les itérateurs eux-mêmes ne sont pas contenus dans le conteneur qui fait l'objet de l'itération.

Dire "iter through" signifierait pour moi que l'on regardait chaque élément du conteneur à son tour, ce qui n'est pas vraiment ce qui se passe.

Au contraire, dire "itérer par dessus" implique pour moi que l’on reçoit à son tour un descripteur externe à chaque élément du conteneur, ce qui est vraiment ce qui est événement.

Cependant, il n'y a rien faux avec "iterer", et quiconque comprend les itérateurs comprendra sûrement les deux expressions.

2
Tyler McHenry

Techniquement, c'est probablement juste "itérer" la période. Mais sa signification est évidente dans les deux cas.

1
Josh

J'utilise "loop over". Simple.

1
AMissico

Soit une rhétorique tautologie . Vous devez supprimer la préposition superflue. Un péché

"Cette boucle itère le top 10 des produits"

ou peut-être

"Je répète les réponses à la recherche de celui qui accepte"

1
serg10

Le mot important est itérer, quelle que soit la matière que vous placez avec elle importe peu.

0
Amber

J'imagine "itérer à travers" quelque chose, comme je fais un classeur. Peut-être que c'est juste une préférence personnelle cependant, étant donné mon image mentale - je pense que "Itérer plus" est l'usage le plus courant.

0
SqlRyan

Je pense qu’ils sont interchangeables pour la plupart des choses pratiques, mais dans mes commentaires, j’ai personnellement tendance à les utiliser avec une petite distinction: j’interprète comme "itératif" quelque chose qui ressemble au sens que vous diriez "je vais regarder par-dessus ". Autrement dit, il ne s’agit pas d’une inspection approfondie: vous la parcourez à la recherche de quelque chose. Inversement, "parcourir" est de parcourir chaque personne à dessein.

Donc, si je cherchais juste un élément dans une liste, je dirais que je "parcourais" la liste ... si j'appliquais une transformation à chaque élément, ce serait "iter à travers".

0
MisterMister

La macro LOOP de Common LISP utilise for element in list, mais for element across array (c'est différent pour que le compilateur puisse générer un code plus efficace ... oui, c'est bizarre), ce qui suggère que la préposition n'est pas vraiment importante.

0
Ken

J'utilise les deux au hasard, parfois dans la même phrase. Laisser tomber le mot de connexion est une mauvaise grammaire et aucune n'a de sens.

0
Joshua

Le dictionnaire dit "iterate" est un verbe transitif qui signifie "dire ou refaire; répéter".

Voulez-vous "répéter" quelque chose que vous venez de dire ou "répéter"? Je pense que vous voudriez simplement le répéter. Ou tout simplement l'itérer, comme vous préférez.

Cela dit, si vous utilisez "iterate" comme une sorte de synonyme de "boucle" ... en boucle de données une itération à la fois, peut-être alors vous êtes peut-être "itérant". C'est un champ de mines!

0
thesunneversets

Le texte récapitulatif de System.Collections.Generic.IEnumerator GetEnumerator () dit:

Retourne un énumérateur qui itère à travers la collection.

Personnellement, je dis à travers ... mais je ne pense vraiment pas que le choix soit important.

0
Peanut

Il y a un meilleur moyen.

J's members are dissimilar, but all can be incremented.
Having incremented every member of 'J' ...
J contains incrementable elements.
J refers to several items.
J refrances several items.
Everything in J is incrementable.
Everything J refers to should necessarily be thought of as being storable in a set.
Sequentially referring to J's contents ...
Apply between each element of J and R until all possible compatible pairs have been found.
Ask J using it's 'ask' function to sequentially apply addition between it's contents and return the result.

C'est comme la parole "a", qui peut souvent réduire toute une phrase à une seule parole.

Pourquoi ne pas garder itération pour itération, comme ceci -> cercle, triangle, octogone, pentagone, hexagone.

0
alan2here