3

メールを受け取ってjsonに変換するプログラムを作成しています。関数型言語を学ぶために、F# を学ぶ良い機会だと思いました。最初に、json に簡単にシリアル化できるメッセージ クラスが必要です。このクラスには、null になるメンバーがいくつかあります。これらのオプションのパラメーターのため、次の形式を使用しています

type Email(from:string, recipient:string, ?cc:string .........) =
    member x.From = from
    member x.Recipient = recipient.....

メールに含まれる可能性のあるすべての情報を保存したいので、このクラスには実際には多くのメンバーがいます。コンストラクターを複数の行に分割して自分でフォーマットしようとすると、警告が表示されます。このような巨大なコンストラクターを f# で見栄えよくするにはどうすればよいでしょうか? これを行うより良い方法はありますか?

同様に、Visual Studio が f# に非常に役立つとは思いません。他の人は何をコーディングに使用していますか? たとえば、emacs用のモードがあると思います...

4

2 に答える 2

3

すべての「改行」パラメーターが同じ列で始まる場合、警告は表示されません。例えば:

type Email(from:string, recipient:string,
           ?cc:string) =
    member x.From = from
    member x.Recipient = recipient

(私は個人的に Visual Studio for F# を楽しんでいます。より完全にサポートされている IDE があるとは思えません。)

于 2012-10-25T20:59:13.113 に答える
1

すべてのプロパティをパラメーターとして受け取るコンストラクターを作成する代わりに、変更可能なプロパティを持つオブジェクトを作成し、構成で設定したいものだけを指定することもできます。

type Email(from:string, recipient:string) =
  member val From = from with get, set
  member val Recipient = recipient with get, set
  member val Cc = "" with get, set
  member val Bcc = "" with get, set

let eml = Email("me@me.com", "you@you.com", Cc="she@she.net")

member valこれはF# 3.0の新機能を使用しています。F# 2.0 で同じことを記述するのはかなり面倒です。getter と setter を手動で定義する必要があるからです。

于 2012-10-25T21:03:31.147 に答える