2013-01-31 42 views

回答

1

動態類型意味着您不需要定義變量的類型,語言解釋器會嘗試猜測該變量的類型(數字,布爾值,字符串等)。

鴨打字意味着我們不感興趣的對象是什麼類型的,而不是我們在對象的功能方面更關注:如果一個對象返回那些我們感興趣的是方法,那麼這意味着對象滿足我們的要求。因此,衆所周知的一句話:「如果走路像鴨子,游泳像鴨子,叫起來像鴨子一隻鳥,那隻鳥是一隻鴨子」

Wikipedia參數多態性是一種方法,使語言更具表現力,同時仍然保持充分靜態類型安全。使用參數多態,函數或數據類型可以一般編寫,以便它可以在不依賴於它們的類型的情況下以相同的方式處理值。

+8

我不認爲你的動態類型的定義是正確的 - ML使用靜態類型,但你不必告訴它是什麼類型的變量,它們是相反推斷的。 – Tom

+3

沒有一個是正確的。動態類型意味着類型檢查是動態完成的。你在說什麼是隱式鍵入。那裏肯定沒有猜測。 2.當然,我們對什麼類型的對象感興趣,這就是打字的全部內容。鴨打字意味着該類型是基於對象(其在紅寶石術語協議或其在Java術語接口),而不是它的類的行爲規範。 3.雖然這個定義是正確的,但你錯過了最重要的一點:在Ruby中沒有意義,PP是靜態類型的一個特性。 –