1

私がタイプを持っているとすると:

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

||>構文を使用してタプルでこれを行うことができます。これをレコードでやりたいと思います。

4

1 に答える 1

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
于 2012-05-11T18:07:33.033 に答える