我想使用F#作爲一個REPL和腳本,它使用C#庫。當我評價REPL一個對象,它打印出它的內部結構:如何從F#打印像REPL不
> <expression>;;
val it: <type> =
<subtype> {<prop> = <value>;
...
<prop> = <value>;}
然後我寫以同一表達式的腳本,並希望它打印相同的輸出。但我找不到任何可以做到這一點的功能。我能找到的最接近的是printfn "%O"
,它使用了ToString()方法,這在我的情況中沒有定義,只是打印對象類型。
這似乎是一個簡單的問題,但我不能找到它回答說這裏或任何在谷歌。
How to generate the F# type signature similar to FSI in my own code?似乎集中在類型,我基本上都需要相當漂亮打印值。
PS:好像它是代碼而言是內部fsi.exe。請參閱fsi.fs和sformat.fs來源。我試圖通過反射來調用它們,但簡單的Internal.Utilities.StructuredFormat.any_to_string(value)
只是打印一個類型。如果有人知道如何正確調用它,那仍然會很好,但是暫時我決定不花費更多的精力。
的可能的複製[如何在自己的代碼生成類似於FSI的F#類型簽名?](http://stackoverflow.com/questions/9908052/how-to-generate-the-f-type-signature-similar -to-FSI功能於我 - 自己的代碼) – TheInnerLight
怎麼樣:http://stackoverflow.com/questions/791706/how-do-i-customize-output-of-a-custom-type-using-printf ? –
@ helge-rene-urholm似乎涉及改變對象類型本身;我無法做到這一點,因爲它來自圖書館。實際上,我想知道他們是如何實現的:「這兩種印刷品收益率都是:{a = 5;}」。這正是我所需要的 – max630