通過擴展我的視野與我的蟒蛇的經驗,我把一些想法。類型與界面:爲什麼打字呢?
如果實體對外部客戶端的願景是通過其接口實現的,那麼類型的目的是什麼?
在靜態類型語言中,類型具有非常強烈的核心重要性。類型和接口是嚴格關聯的。例如,在java中,當聲明一個接口FooIface和一個對象實現該接口時,即使在方法,簽名和例外方面兩者完全相同,也不能在需要BarIface的上下文中使用它。
在Python中並非如此。即使兩個對象具有完全不同且不相關的類型,只要它們的界面相同,它們就完全可以透明地互換。如果它像鴨子一樣嘎嘎嘎嘎地行走,那就是一隻鴨子。我可以通過在運行時完全改變它的接口來完全改變對象的性質,但它會保留原始類型。
這個觀點在javascript中被放到了極致,任何原型鏈中的每個對象都只是一個對象。你問在JavaScript中的每個對象的類型,它會告訴你,這是一個對象。
在我看來,這些語言的類型的概念是徒勞的限制。那麼真正重要的是什麼?類型在動態類型語言中有真正意義嗎?
這些都是有趣的一點。讓我考慮一下,最終我會回來。 +1 btw。 – 2010-01-08 07:53:47