2010-04-26 52 views
55

只是想過它。有沒有語義上的區別,還是我們可以自由選擇?它是「遍歷」還是「迭代」?

編輯我接受了@roygbivs answer,因爲大多數答案表明,這是一個挑選的問題,而且它並沒有真正改變其含義。在這種情況下,由於而不是根本不帶任何信息(在特定的上下文中),所以它們可以省略。

+4

我會說「迭代」,但英語不是我的第一語言。 – zneak 2010-04-26 17:14:54

+9

它不是'通過'或'over'。兩者都是無用的副詞。你會簡單地說'迭代'。 '我正在編寫迭代集合的代碼。「否則,就像說明迭代兩次的含義一樣。 – 2010-04-26 17:30:29

回答

61

「through」和「over」是無用的副詞。

例子:

  • 雖然迭代這個集合,我的代碼拋出一個錯誤。

  • 此代碼迭代集合。

  • 您的任務是編寫迭代集合的代碼。

這就像說 「北上」 還是 「南下」。 「向上」和「向下」是無用的。相反,你應該說,「我在北方去夏天。」或者「在南方,他們種植棉花。」

+7

我覺得他們是比介詞更多的介詞,但是它們的定義看起來很靈活,並且取決於你如何解析句子。這是一個短語動詞,你正在簡化?迭代=>迭代?還是你用一個介詞迭代作爲不及物動詞,然後簡化爲一個及物動詞? – 2010-04-26 17:37:20

+5

正如Mark所指出的,「through」和「over」是介詞。那麼你會怎麼說呢?你只是「迭代容器」?對我來說這聽起來並不正確。 – 2010-04-26 17:47:56

+1

@邁克爾,它可能聽起來不正確,因爲我們(統稱)使用迭代結合*通過*或*結束*。羅伊給出了一個很好的例子,帶*方向的*向上*向下*。我用*迭代了列表/控件*,過了一段時間後,它感覺更自然,更沒有用無用的詞彙。 – IAbstract 2010-04-26 17:52:44

6

兩者基本上意味着相同!

因此,您可以自由選擇適合您的任何一種。

14

我會說迭代,這是我一直看到它寫的方式。

+5

然而,在Google中,「迭代集合」產生的結果明顯比「over」和沒有介詞的結果多得多...... – Timwi 2010-09-10 11:08:00

0

從技術上講,這可能只是「迭代」時期。但無論在哪種情況下,它的含義都很明顯。

0

重要的詞是iterate,你用它放置什麼填充物並不重要。

0

我圖片「迭代」的東西,我做文件櫃的方式。也許這只是個人喜好,但鑑於我的心理形象 - 我認爲「迭代結束」是更常見的用法。

14

我認爲這取決於介詞的賓語;你迭代迭代器,遍歷集合,遍歷容器,遍歷整個列表,遍歷整個範圍等等,但是遍歷列表的內容,通過容器的(元素)遍歷(元素) )範圍,通過集合的元素等。在幾乎所有情況下,它們都是可以互換的;我會使用「over」而不是「through」的唯一地方就是迭代器本身;但對於任何可迭代的對象,我會使用「over」或「through」。

+1

這種區別聽起來最好。順便說一句,''over''聽起來更膚淺,就像你是一個外部消費者。但''通''聽起來更私人,更親密。就像也許你是實現者並且你正在編寫枚舉器。 – 2010-04-26 17:42:22

+0

我在遍歷列表,範圍或集合時沒有問題(以英語爲母語)。事實上,「重複」**總是**聽起來不對。 @Mark,迭代的定義是外部的。所以總是最好的。 – jmucchiello 2010-04-26 18:57:04

+0

@jmucchiello,我相信我們有一個誤區;注意我寫了「遍歷範圍」和「通過(範圍的元素)」。我同意在聲音上更自然,但我認爲在大多數情況下「通過」聽起來不錯,除了迭代器本身,在這種情況下,「through」聽起來比「over」更難聽。 – 2010-04-26 19:48:55

2

我總是會說「迭代而不是」,因爲它強調了迭代器本身不包含在迭代主題的容器中的(相對重要的)事實。

要說「遍歷」,對我而言,意味着有人依次查看容器的每個元素,而這並不是真的發生了什麼。

相比之下,說「迭代」意味着我正在接受一個外部句柄到容器的每個元素輪流,其中真的是發生了什麼事情。

但是,沒有什麼錯誤與「遍歷」,任何理解迭代器的人都肯定會理解這兩個短語。

0

我使用隨機,有時在同一句話。刪除連接詞是不好的語法,也沒有意義。

0

字典中的「iterate」是一個及物動詞,意思是「說或再做;重複」。

你會「重複」一些你剛剛說的話,或者「重複」嗎?我想你只是簡單地重複一遍。或者只是簡單地重複它,如你所願。儘管如此,如果你使用「迭代」作爲「循環」的某種同義詞......循環一次數據一次迭代,也許你可能會「迭代」。這是雷區!

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位的產品」

,或許

「我循環尋找一個答案接受」

1

我使用「循環」。簡單。

0

Common Lisp的LOOP宏使用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. 

這就像「有」這個詞,可以經常減少一個單詞的整體感覺。

爲什麼不保持迭代迭代,就像這樣 - >圓形,三角形,八角形,五邊形,六邊形。