2012-05-11 83 views
1

鑑於我有型:管記錄對象PARAM列表

type NewsMessage(identifier:string, headline:string) 

和這個紀錄:

type NewsMessageParams = { 
    identifier:string 
    headline:string 
} 

是否有相適應的記錄插入類的構造函數的含蓄的方式?

事情是這樣:

let newsMessageParmas = {identifier=""; headline=""} 
new NewsMessage(newsMessageParams) //this is where i need help 

您可以使用||>語法元組做到這一點。我想用記錄來做這件事。

回答

3

像這樣的東西會工作:

let toClass {identifier = i; headline = h} = NewsMessage(i, h) 

// Usage 
let newsMessageParams = {identifier = ""; headline = ""} 
let newsMessage = newsMessageParams |> toClass 

注意對象的構造是不是在F#一流的,所以你必須使用管道運營商更多的機會,如果聲明NewsMessage如識別聯合:

type NewsMessage = NewsMessage of string * string 
let toTuple {identifier = i; headline = h} = i, h 

let newsMessageParams = {identifier = ""; headline = ""} 
let newsMessage = newsMessageParams |> toTuple |> NewsMessage