在程式語言中,type(類型)指的是變數或數據的分類或分類方式,它確定了數據的性質,包括它可以執行的操作,佔用的記憶體空間,以及對該數據可以進行的操作。
整數(integer)
、浮點數(float)
、字元(char)
等。它們通常具有固定的大小和操作。類別(class)
或struct
來實現。自定義類型可以具有自己的變數和方法。字串(array)
是由相同類型的元素組成的,struct
包含了多個不同類型的成員。編譯(compile)
時檢測類型錯誤,提高代碼的穩定性和性能,例如:Java
和C++
。JavaScript
,Python
和Ruby
。靜態類型特點 | 動態類型特點 |
---|---|
編譯器可在編譯(compile) 時發現類型錯誤。 |
程式碼是直譯(interpret) 的,可以動態載入,沒有「編譯/建置」週期,應用程式的整體開發速度會更快。 |
可見的類型資訊可作為文件記錄,程式設計師無法以其他方式來理解這段程式碼,他們無法根據物件的上下文推斷出它的類型。 | 原始碼不包括明確的類型資訊,不包含類型宣告的程式碼會更容易被理解,程式設計師可以根據上文推斷出 |
物件的類型編譯(compile) 後的程式碼是經過最佳化的,可以跑得更快。 |
靈活度高,更容易實作元程式設計(Metaprogramming) 。 |
Metaprogramming is a programming technique in which computer programs have the
ability to treat other programs as their data. It means that a program can be
designed to read, generate, analyze or transform other programs, and even modify
itself while running.
元程式設計是指撰寫能夠生成或操作程式碼的程式碼,並且在執行時完成部分本應在編譯時完成的工作。它可以是強大的工具,但也需要謹慎使用。
元程式設計雖可以提高程式設計效率,但也可能讓程式碼變得晦澀難懂。
(詳細的說明可能就要自成一個主題辣(暈),有興趣瞭解與Ruby
相關的元程式設計可以自行去閱讀《Metaprogramming Ruby 2》。)
請記住,訊息是物件導向應用程式的核心,它們會在物件之間藉由公共介面傳遞。鴨子類型能將公共介面從特定類別分別出來,並建立出 「做什麼,而非是什麼」 的虛擬類別。
此外,鴨子類型能揭露出隱藏的底層抽象,好處在於依賴於抽象能夠降低風險並增加靈活性,使應用程式的維護成本更低,且更易於修改。
參考資料: