Tôi đang cố gắng sử dụng F # làm REPL và tập lệnh sử dụng thư viện C#. Khi tôi đánh giá một đối tượng trong REPL, nó sẽ in cấu trúc bên trong của nó:Cách in từ F # như REPL không
> <expression>;;
val it: <type> =
<subtype> {<prop> = <value>;
...
<prop> = <value>;}
Sau đó, tôi đang viết một tập lệnh có cùng biểu thức và muốn in cùng một đầu ra. Nhưng tôi không thể tìm thấy bất kỳ chức năng print
nào có thể thực hiện được. Gần nhất tôi có thể tìm thấy là printfn "%O"
trong đó sử dụng ToString() phương pháp, mà không được xác định trong trường hợp của tôi và chỉ in các loại đối tượng.
Điều này có vẻ là một câu hỏi đơn giản nhưng tôi không thể tìm thấy câu hỏi được trả lời ở đây hoặc bất kỳ nơi nào trong Google.
How to generate the F# type signature similar to FSI in my own code? dường như tập trung vào loại và tôi về cơ bản cần có giá trị khá được in.
PS: có vẻ như đó là mã bên trong fsi.exe. Xem các nguồn fsi.fs và sformat.fs. Tôi đã cố gắng gọi chúng thông qua sự phản chiếu, nhưng chỉ đơn giản là Internal.Utilities.StructuredFormat.any_to_string(value)
chỉ in một loại. Sẽ vẫn tốt nếu ai biết làm thế nào để gọi nó một cách chính xác, nhưng trong thời gian tôi quyết định không dành nhiều nỗ lực vào nó.
Bản sao có thể có của [Cách tạo chữ ký loại F # tương tự như FSI trong mã của riêng tôi?] (Http://stackoverflow.com/questions/9908052/how-to-generate-the-f-type-signature-similar -to-fsi-in-my-own-code) – TheInnerLight
điều gì về: http://stackoverflow.com/questions/791706/how-do-i-customize-output-of-a-custom-type-using-printf ? –
@ helge-rene-urholm dường như liên quan đến việc thay đổi loại đối tượng; Tôi không thể làm điều đó vì nó từ thư viện. Trên thực tế, tôi tự hỏi làm thế nào họ đạt được "cả hai báo cáo in sản lượng: {a = 5;}" kết quả ở đó; đây chính xác là những gì tôi cần – max630