F#泛型

2018-12-16 10:27 更新

泛型允許延遲類或方法中的編程元素的數(shù)據(jù)類型的規(guī)范,直到它在程序中實際使用。 換句話說,泛型允許你編寫一個可以處理任何數(shù)據(jù)類型的類或方法。
您可以使用數(shù)據(jù)類型的替代參數(shù)來編寫類或方法的規(guī)范。 當編譯器遇到類的構(gòu)造函數(shù)或方法的函數(shù)調(diào)用時,它會生成代碼來處理特定的數(shù)據(jù)類型。
在F#中,函數(shù)值,方法,屬性和聚合類型(如類,記錄和區(qū)別聯(lián)合)可以是通用的。
通用結(jié)構(gòu)包含至少一個類型參數(shù)。 通用函數(shù)和類型使您能夠編寫適用于各種類型的代碼,而無需重復每種類型的代碼。

語法

編寫通用構(gòu)造的語法如下 

// Explicitly generic function.
let function-name<type-parameters> parameter-list =
   function-body

// Explicitly generic method.
[ static ] member object-identifer.method-name<type-parameters> parameter-list [ return-type ] =
   method-body

// Explicitly generic class, record, interface, structure,
// or discriminated union.
type type-name<type-parameters> type-definition

例子

(* Generic Function *)
let printFunc (x: 'a) =
   do printfn "%A" x

let gr = new genericClass<string>("zara")
let gs = genericClass( seq { for i in 1 .. 10 -> (i, i*i) } )

當你編譯和執(zhí)行程序,它產(chǎn)生以下輸出 

"zara"
seq [(1, 1); (2, 4); (3, 9); (4, 16); ...]
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號