2011-09-17 15 views
7

मैं एक एफ # प्रोग्राम लिख रहा हूं जो एक एएसटी प्रकार में एक स्ट्रिंग को पार करता है जो एक भेदभाव संघ है।प्रिंटिंग एफ # भेदभाव संघ

जब मैं अपना कोड चलाने के लिए fsi (मोनो + मैक ओएस एक्स पर) का उपयोग करता हूं, तो एएसटी एक अच्छे प्रारूप में मुद्रित होता है। लेकिन जब मैं printfn "%s" <| ast.ToString() का उपयोग करता हूं तो मुझे कुछ FSI_0002.Absyn+clazz मिलता है। सभी भेदभाव वाले यूनियन प्रकारों के लिए विधि लिखना एक बड़ा काम होगा।

मैं fsi जिस तरह से मूल्य प्रिंट कर सकता हूं?

+0

https://stackoverflow.com/questions/1259039/what-is-the-enum-getname-equivalent-for-f-union-member – knocte

उत्तर

9

क्या आपने printfn "%A" ast को आजमाया है? %A विनिर्देशक StructuredFormatDisplayAttribute[MSDN] पर उपस्थित होने पर विचार करता है।

+0

का संभावित डुप्लिकेट हां, यह काम करता है। धन्यवाद! :-) –

1

एक स्ट्रिंग में एक साथ भेदभाव संघ बदलने के लिए, आप का उपयोग करना चाहिए अस्थिर के बजाय sprintf "%A" ast.ToString()।

यदि आप Enum.GetName चाहते हैं, तो आप Microsoft.FSharp.Reflection नामस्थान का उपयोग कर सकते हैं। What is the Enum.GetName equivalent for F# union member? देखें।