• 參數多態性

    編輯
    本詞條由“匿名用戶” 建檔。

    參數多態性

    編輯

    編程語言類型理論中,參數多態性允許給一段代碼一個通用類型,用變量代替實際類型,然后根據需要用特定類型進行實例化。參數多態的函數和數據類型有時被分別稱為通用函數和通用數據類型,它們構成了通用編程的基礎。參數多態性可以與臨時多態性進行對比。參數多態的定義是統一的:無論它們被實例化在什么類型,它們的行為都是相同的。與此相反,臨時多態定義對每種類型都有不同的定義。因此,臨時多態性通常只能支持有限數量的不同類型,因為必須為每個類型提供一個單獨的實現。

    基本定義

    編輯

    有可能編寫不依賴于其參數類型的函數。例如,身份函數簡單地返回其未修改的參數。這自然產生了一系列潛在的類型,比如通過引入一個普遍量化的類型變量,可以被賦予一個單一的、最一般的類型。然后,多態定義可以通過替換任何具體類型來實例化為{displaystylealpha}的任何具體類型來實例化。這樣就產生了完整的潛在類型系列。身份函數是一個特別極端的例子,但許多其他函數也受益于參數化多態性。例如,一個{displaystyle{mathsf{append}}函數將兩個列表相加,但并不意味著它是一個多義詞。}函數將兩個列表相加,它不檢查列表中的元素,只檢查列表結構本身。因此。{displaystyle{mathsf{append}}可以被賦予類似的類型。}可以被賦予一個類似的類型系列,比如說是在一個單一的類型上進行參數化的,但函數可以在任意多的類型上進行參數化。例如,在{displaystyle{mathsf{snd}}分別返回一對元素的xxx和第二元素的函數可以被賦予以下類型:{displaystyle{mathsf{snd}}。

    多態的機制

    分別返回一對元素的xxx和第二元素的函數,可以被賦予以下類型。{displaystyle{mathsf{fst}}的調用中被實例化為Bol。}因此,整個表達式的類型是用于引入參數多態性的語法在不同的編程語言中差異很大。例如,在一些編程語言中,如Haskell,其?α{displaystyle/forall/alpha}量詞是隱式的,并且可以是量詞是隱性的,可以省略。其他語言則要求在參數多態函數的某些或全部調用位置明確地實例化類型。歷史參數多態性在1975年首次被引入到ML編程語言中。今天,它存在于StandardML,OCaml,F#,Ada,Haskell,Mercury,VisualProlog,Scala,Julia,Python,TypeScript,C++和其他語言中。Java、C#、VisualBasic.NET和Delphi都各自引入了參數多態性的泛型。

    內容由匿名用戶提供,本內容不代表www.gelinmeiz.com立場,內容投訴舉報請聯系www.gelinmeiz.com客服。如若轉載,請注明出處:http://www.gelinmeiz.com/170775/

    (1)
    詞條目錄
    1. 參數多態性
    2. 基本定義

    輕觸這里

    關閉目錄

    目錄
    91麻精品国产91久久久久