[英]Haskell's “deriving Show” in F#?
在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
?
如果使用%A
格式說明符,則f#打印函數(如printf
可以合理地格式化任何數據類型(如果指定%O
則它們使用ToString
)。 您可以使用sprintf
實現ToString
,它返回格式化的字符串:
type Pos =
| Pos of int * int
override x.ToString() = sprintf "%A" x
這打印例如“Pos(1,2)”,它適用於大多數F#類型(列表,聯合,記錄,元組)。 它比僅添加deriving Show
長一些,但至少你不必自己實現打印。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.