2010-08-17 20 views
7

कार्यात्मक भाषाओं के लिए काफी नया है, लेकिन मैं किसी और के कोड को बहुत से F # के साथ बनाए रख रहा हूं। क्या कोई इस में कुछ अंतर्दृष्टि प्रदान कर सकता है?एफ # - प्रकार int प्रकार इकाई

 let mtvCap = Rendering.MTViewerCapture(mtViewer) 
     mtvCap.GetCapture() 
     mtvCap.ToWpfImage() 
     grid.Children.Add(mtvCap.ImageElement) 

MTViewer.ImageViewer प्रकार System.Windows.Controls.Image की है, और ग्रिड System.Windows.Controls.Grid है।

फिर, त्रुटि है: प्रकार int प्रकार यूनिट के साथ संगत नहीं है

+4

ब्रावो जैसे दिखने के लिए अंतिम पंक्ति को संशोधित करने का प्रयास करें! अधिकांश डेवलपर्स समय फिर से लिखने बर्बाद कर दिया होगा। मुझे खुशी है कि आप सही काम कर रहे हैं: तकनीक सीखना। – pblasucci

उत्तर

14

एफ # आप चुपचाप वापसी मूल्यों की अनदेखी करने के लिए अनुमति नहीं देता: यही कारण है कि सबसे अधिक संभावना उम्मीदवार इस लाइन होगा। प्रकार unitvoid का एफ # संस्करण है। तो त्रुटि अनिवार्य रूप से

मैं कोई वापसी के लिए बयान कह रहा है अपेक्षित लेकिन इसके बजाय यह एक पूर्णांक मूल्य

या विपरीत देता है। मैं इस त्रुटि संदेश को गलत तरीके से पढ़ता हूं।

क्या होने की संभावना हो रहा है निम्नलिखित

  1. प्रश्न में विधि में से एक एक int वापसी मान लेकिन विधि Add रिटर्न शून्य इसलिए एफ # उम्मीद कर रही है सिर्फ एक वापसी मान
  2. प्रश्न में विधि के लिए पूछ रहा है है unit के रूप में टाइप किया गया है लेकिन Addint लौटा रहा है और F # आपको मूल्य को अनदेखा करने की आवश्यकता है।
  3. GetCapture या ToWpfImage वापसी मूल्य जो स्पष्ट रूप से संभालने की आवश्यकता है।

पिछले 2 मामलों आप ignore समारोह

mtvCap.GetCapture() |> ignore 
mtvCap.ToWpfImage() |> ignore 
grid.Children.Add(mtvCap.ImageElement) |> ignore 

के लिए मूल्य गुजर थोड़ा के आसपास खुदाई करने के बाद इसे ठीक कर सकते के लिए मेरा मानना ​​है कि # 2 मुद्दा है क्योंकि UIElementCollection.Add रिटर्न एक int मूल्य। इस

grid.Children.Add(mtvCap.ImageElement) |> ignore 
+0

हां, बिल्कुल यह प्रतीत होता है, धन्यवाद। – mkocubinski

1

मैं एफ # के बारे में उल्लेखनीय थोड़ा पता है, लेकिन के रूप में मुझे याद है, "इकाई" और कहा कि "शून्य" की अपनी तरह से है, इसलिए मैं कर रहा हूँ अनुमान लगाएंगे कि आप एक ऐसे फ़ंक्शन के "वापसी मूल्य" को असाइन करने का प्रयास कर रहे हैं जिसमें एक योग्य नहीं है।

let mtvCap = Rendering.MTViewerCapture(mtViewer)

+0

उत्तर तकनीकी रूप से सही है, लेकिन यदि आप रिटर्न परिणाम में रुचि नहीं रखते हैं (जैसा कि यहां मामला लगता है) तो आप शायद जेरेडपार के समाधान के साथ जाना चाहते हैं। – Robert

संबंधित मुद्दे