質問

でHaskellのは、それが代数のタイプを作るのは簡単です/単純型定義にderiving Showを追加することによって、文字列として「表示」組合を判別します。

でF#私の終わりのようなものを書いてアップします:

type Pos = 
    | Pos of int * int
    override this.ToString() = 
        match this with
        Pos(startp, endp) -> sprintf "Pos(%d, %d)" startp endp

と明らかにそれは、より複雑なタイプで非常に悪くなる。

F#でderiving Showのようなものを取得する方法?

役に立ちましたか?

解決

などprintfとしてのF#の印刷機能を使用すると、%A書式指定子を(あなたがToStringを指定した場合、彼らは%Oを使用)を使用する場合、合理的に任意のデータ型をフォーマットすることができます。あなたがフォーマットされた文字列を返すToStringを使用してsprintfを実装することができます:

type Pos =  
    | Pos of int * int 
    override x.ToString() = sprintf "%A" x 

この例のための版画 "POS(1、2)" と、それはF#の型(リスト、労働組合、レコード、タプル)のほとんどのために動作します。それはより少し長くちょうどderiving Showを追加することなく、少なくとも、あなたは自分自身を印刷します。

を実装する必要はありません
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top