Próbuję użyć F # jako REPL i skrypt, który używa biblioteki C#. Kiedy ocenić obiekt w REPL, drukuje swoją wewnętrzną strukturę:Jak drukować z F # jak REPL ma
> <expression>;;
val it: <type> =
<subtype> {<prop> = <value>;
...
<prop> = <value>;}
Następnie Piszę skrypt z tego samego wyrazu i chcesz go wydrukować samą moc. Ale nie mogę znaleźć żadnej funkcji, która by to zrobiła. Najbliższe, jakie mogłem znaleźć, to printfn "%O"
, które używa metody ToString(), która nie jest zdefiniowana w moim przypadku i po prostu drukuje typ obiektu.
To proste pytanie, ale nie mogę go znaleźć tutaj ani w Google.
How to generate the F# type signature similar to FSI in my own code? wydaje się być skoncentrowany na typie, a ja zasadniczo potrzebuję raczej ładnie wydrukowanej wartości.
PS: wygląda na to, że jest to kod wewnętrzny dla fsi.exe. Zobacz źródła fsi.fs i sformat.fs. Próbowałem przywołać je poprzez odbicie, ale prosty Internal.Utilities.StructuredFormat.any_to_string(value)
wydrukowano tylko jako typ. Nadal byłoby miło, gdyby ktokolwiek wiedział, jak prawidłowo go przywołać, ale na razie postanowiłem nie poświęcać mu więcej wysiłku.
Możliwy duplikat [Jak wygenerować podpis typu F # podobny do FSI w moim własnym kodzie?] (Http://stackoverflow.com/questions/9908052/how-to-generate-the-f-type-signature-similar -to-fsi-in-my-own-code) – TheInnerLight
co powiesz na: http://stackoverflow.com/questions/791706/how-do--- customize-output-of-a-custom-type-using-printf ? –
@ helge-rene-urholm, który wydaje się obejmować zmianę samego typu obiektu; Nie mogę tego zrobić, ponieważ pochodzi z biblioteki. Właściwie to zastanawiam się, w jaki sposób osiągnęli "wynik drukowania obu wydruków: {a = 5;}"; to jest dokładnie to, czego potrzebowałbym – max630