2010-04-26 1 views
55

Просто подумал об этом. Есть ли семантическое различие или мы можем выбирать?Является ли он «перебирать» или «перебирать» что-то?

EDIT я принял @roygbivs answer, потому что большинство из ответов предположил, что это дело вкуса, который один на выбор, и что это на самом деле не меняет смысла. В этом случае, поскольку по и по сравнению с не содержат никакой информации вообще (в этом конкретном контексте), их можно оставить без внимания.

+4

Я бы сказал «перебирать», но английский не является моим первым языком. – zneak

+9

Это не 'through' или' over'. Оба бесполезные наречия. Вы просто сказали бы «итерации». 'Я пишу код для итерации коллекции. 'В противном случае это похоже на то, что дважды повторяется значение итерации. – 2010-04-26 17:30:29

ответ

61

«через» и «над» бесполезные наречия.

Примеры:

  • Хотя перебор этой коллекции, мой код выдает ошибку.

  • Этот код перебирает коллекцию.

  • Ваше задание написать код, который перебирает коллекцию.

Это как сказать "до севера" или "вниз на юг". «вверх» и «вниз» бесполезны. Вместо этого вы должны сказать: «Я еду на север летом». или «На юге они выращивают хлопок».

+7

Я чувствую, что они больше предлогов, чем наречия, но определения либо кажутся гибкими, и это зависит от того, как вы разбираете предложение. Это фразовый глагол, который вы упрощаете? Итерация над => итерация? Или вы повторяете как непереходный глагол с предлогом, который затем упрощает переходный глагол? –

+5

Как отметил Марк, «через» и «над» - предлоги. Как бы вы так выразились? Вы просто «итерации контейнера»? Это звучит не совсем так для меня. –

+1

@ Майкл, это может звучать неправильно, потому что мы (вместе) используем итерацию в сочетании с * через * или * над *. Рой дает хороший пример с * up * & * down * с направлением. Я использовал * итерацию списка/элементов управления *, и через некоторое время он чувствовал себя более естественным и менее загроможденным бесполезными словами. – IAbstract

6

Оба по существу означают то же самое!

Итак, вы можете выбрать любой из них, который вам подходит.

14

Я бы сказал, повторяю, и это так, как я всегда видел, как это написано.

+5

Однако в Google «итерация по коллекции» дает значительно больше результатов, чем «над» и без предлога ... – Timwi

0

Технически это, вероятно, просто «повторение» периода. Но очевидно, что вы имеете в виду в любом случае.

0

Важным словом является итерация, какой наполнитель, который вы размещаете с ней, действительно не имеет значения.

0

Я рисую «итерацию через» что-то, как я делаю файловый кабинет. Может быть, это просто личное предпочтение, хотя, учитывая мой ментальный образ - я думаю, что «Iterate Over» - более распространенное использование.

14

Я думаю, что это зависит от объекта предлога; вы перебираете итератор, над коллекцией, над контейнером, над списком, над диапазоном и т. д., но вы перебираете (содержимое) списка через (элементы) контейнера через (элементы) диапазон, через (элементы) коллекции и т. д. Почти во всех случаях они взаимозаменяемы; единственное место, которое я бы использовал «над», но не «через», относится к самому итератору; но для любого итеративного объекта я использовал бы «over» или «through».

+1

Это различие звучит лучше всего. Кстати, '' over '' звучит более поверхностно, например, вы являетесь внешним потребителем. Но «через» звучит более личным, более интимным. Например, вы - разработчик, и вы пишете счетчик. –

+0

У меня нет проблем (как родной английский оратор), итерации по списку, диапазону или коллекции. Фактически, «итерация» ** всегда ** звучит неправильно для моего уха. @Mark, итерация по определению является внешней. Так что лучше всегда. – jmucchiello

+0

@jmucchiello, я считаю, что у нас есть недоразумение; обратите внимание, что я написал «итерацию по диапазону» и «через (элементы) диапазона». Я согласен, что более звучит более естественно, но я думаю, что «через» звучит нормально в большинстве случаев, за исключением самого итератора, и в этом случае «через» звучит гораздо более странно, чем «над». –

2

Я бы всегда говорил «итерации над», потому что он подчеркивает (относительно важный) факт, что сами итераторы не содержатся в контейнере, который является предметом итерации.

Чтобы сказать, что «итерация через», для меня, означала бы, что каждый смотрел на каждый элемент контейнера по очереди, что на самом деле не происходит.

В отличие от этого, говоря «итерация», я подразумеваю, что каждый получает внешнюю ручку для каждого элемента контейнера в свою очередь, что действительно действительно то, что происходит.

Однако ничего нет Неправильно с «итерацией», и любой, кто понимает итераторы, наверняка поймет обе фразы.

0

Я использую оба случайных, иногда в том же предложении. Отбрасывание соединительного слова - плохая грамматика, и ни одна из них не имеет смысла.

0

Словарь говорит, что «итерация» является переходным глаголом, означающим «говорить или делать снова, повторять».

Вы бы «повторили» что-то, что вы только что сказали, или «повторить»? Думаю, ты просто повторил это. Или просто пропустите его, как вы предпочитаете.

Сказав это, если вы используете «итерацию» как своего рода синоним «петли» ... зацикливая данные по одной итерации за раз, возможно, тогда, возможно, вы «Итерации через». Это минное поле!

0

Я думаю, что они взаимозаменяемы для большинства практических целей, но в моих комментариях я лично стараюсь использовать их с небольшим различием: я интерпретирую «перебирать» что-то похожее на то, что вы сказали бы «я», посмотрим ». То есть, это не глубокий осмотр: вы просматриваете его, ища что-то. И наоборот, «итерация» - это целенаправленно проходить каждый.

Так что, если бы я просто искал один элемент в списке, я бы сказал, что я «перебирал» список ... если бы я применял какое-то преобразование к каждому элементу, это было бы «итерацией».

30

Не правильно или неправильно, только некоторые статистические данные:

"iterate through"  340,000 search results 
"iterate over"  287,000 
"iterate thru"   35,000 
————————————————————————————— 
"iterate in"   75,800 
"iterate on"   49,600 
"iterate across"  44,300 
"iterate along"   5,230 
"iterate among"   2,300 
"iterate inside"  1,570 
"iterate within"  1,280 
"iterate against"   709 
"iterate amongst"   136 
"iterate amidst"   2 
0

Либо это rhetoical tautology. Вы должны удалить лишний предлог. Как и в

"Этот цикл перебирает 10 лучших продуктов"

или, возможно,

"Я перебор ответы ищет тот, чтобы принять"

0

Обычный макрос LOOP Lisp использует for element in list, но for element across array (это отличается, поэтому компилятор может генерировать более эффективный код ... да, это странно), предполагая, что предлог на самом деле не так важен.

0

Сводный текст для System.Collections.Generic.IEnumerator GetEnumerator() говорит:

Возвращает перечислитель, итерацию через коллекции.

Лично я говорю ... но на самом деле я не думаю, что это важно, какой из них вы используете.

0

Существует лучший способ.

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. 

Это как слово «есть», которое может так часто уменьшать целое число до одного слова.

Почему бы не продолжать повторять итерацию, например: круг, треугольник, восьмиугольник, пятиугольник, шестиугольник.