鴨子類型duck typing(動態)

 在程序設計中,鴨子類型(duck typing)是動態類型的一種風格。在這種風格中,一個對象有效的語義,不是由繼承自特定的類或實現特定的接口,而是由當前方法和屬性的集合決定。這個概念的名字來源於由James Whitcomb Riley提出的鴨子測試,「鴨子測試」能夠這樣表述:函數

「當看到一隻鳥走起來像鴨子、游泳起來像鴨子、叫起來也像鴨子,那麼這隻鳥就能夠被稱爲鴨子。」測試

在鴨子類型中,關注的不是對象的類型自己,而是它是如何使用的。例如,在不使用鴨子類型的語言中,咱們能夠編寫一個函數,它接受一個類型爲鴨的對象,並調用它的走和叫方法。在使用鴨子類型的語言中,這樣的一個函數能夠接受一個任意類型的對象,並調用它的走和叫方法。若是這些須要被調用的方法不存在,那麼將引起一個運行時錯誤。任何擁有這樣的正確的走和叫方法的對象均可被函數接受的這種行爲引出了以上表述,這種決定類型的方式所以得名。spa

鴨子類型一般得益於不測試方法和函數中參數的類型,而是依賴文檔、清晰的代碼和測試來確保正確使用。從靜態類型語言轉向動態類型語言的用戶一般試圖添加一些靜態的(在運行以前的)類型檢查,從而影響了鴨子類型的益處和可伸縮性,並約束了語言的動態特性。設計

相關文章
相關標籤/搜索