से एफ # फ़ंक्शन कैसे शुरू करूं, जबकि एक एफ # एप्लिकेशन डीबग करते समय, मैं वीएस -2010 तत्काल विंडो से एफ # विधि का आह्वान करने में सक्षम होना चाहता हूं लेकिन यह काम नहीं कर रहा है। समस्या यह प्रतीत होती है कि एफ # विधियां वास्तव में FSharpFunc ऑब्जेक्ट्स हैं। मैंने "Invoke" विधि का उपयोग करने का प्रयास किया लेकिन इंटरैक्टिव विंडो इसे पहचान नहीं पाती है।मैं वीएस -2010 तत्काल विंडो
उत्तर
विजुअल स्टूडियो के लिए एफ # एकीकरण तत्काल विंडो (या घड़ियों) में एफ # अभिव्यक्तियों का समर्थन नहीं करता है, इसलिए एकमात्र विकल्प सी # कोड को संकलित प्रतिनिधित्व के अनुरूप सी # कोड लिखना है जो F # उपयोग करता है। मैंने ऐसा करने की कोशिश की और मुझे आपके जैसा वर्णित एक ही समस्या है - Invoke
विधि वहां दिखाई दे रही है (प्रतिबिंबक में), लेकिन विजुअल स्टूडियो इसे सीधे कॉल नहीं करना चाहता है। मैंने निम्नलिखित उदाहरण का उपयोग करके इसे आजमाया:
let foo f =
let n = f 1 2 // Breakpoint here
n + 1
हालांकि, फ़ंक्शन को कॉल करने के अन्य तरीके हैं। इस मामले में, एफ # कंपाइलर द्वारा उत्पन्न वास्तविक कोड InvokeFast
विधि पर कॉल है। आप तत्काल खिड़की के लिए निम्न लिखते हैं, तो यह काम करता है:
Microsoft.FSharp.Core.FSharpFunc<int, int>.InvokeFast<int>(f, 1, 2) |
यह भी प्रतीत होता है कि आप सी # 4.0 से dynamic
का उपयोग कर सामान्य Invoke
विधि कॉल कर सकते हैं (यह साबित करते है कि विधि वास्तव में है!):
((dynamic)f).Invoke(1, 2)
यह केवल तभी काम करता है जब आप Microsoft.CSharp.dll
(और आपके कोड में असेंबली में परिभाषित कुछ प्रकार का उपयोग करें - उदाहरण के लिए एक एनोटेशन - जैसे कि यह लोड हो जाता है)।
ठीक उसी वाक्यविन्यास के साथ तत्काल विंडो से कई (करीबी) तर्कों के साथ एक फ़ंक्शन का आह्वान करने में सक्षम हूं, ठीक है, यह काम करता है! मैंने स्थिर InvokeFast की कोशिश की लेकिन मुझे एहसास नहीं हुआ कि मुझे माइक्रोसॉफ्ट के लोड को मजबूर करने की आवश्यकता है .CSharp। गतिशील का उपयोग करना बहुत चालाक है;) –
बस स्पष्ट करने के लिए - 'InvokeFast' दृष्टिकोण को 'Microsoft.CSharp.dll' के बिना काम करना चाहिए (हालांकि शायद कुछ करने की आवश्यकता है ताकि तत्काल विंडो' FSharp.Core.dll' लोड हो)। सी # लाइब्रेरी केवल 'गतिशील' के लिए आवश्यक है। –
- 1. क्या मैं वीएस -2010
- 2. वीएस 2010
- 3. मैं वीएस 2010
- 4. तत्काल विंडो
- 5. वीएस 2010
- 6. वीएस -2010:
- 7. वीएस 2010
- 8. वीएस 2010
- 9. वीएस -2010
- 10. वीएस 2010
- 11. वीएस -2010
- 12. वीएस 2010
- 13. वीएस 2010
- 14. वीएस -2010
- 15. वीएस -2010
- 16. वीएस -2010
- 17. वीएस 2010
- 18. वीएस 2010
- 19. वीएस 2010
- 20. वीएस -2010
- 21. वीएस 2010
- 22. वीएस -2010
- 23. वीएस -2010
- 24. वीएस -2010
- 25. वीएस -2010
- 26. वीएस -2010
- 27. वीएस -2010
- 28. वीएस -2010
- 29. वीएस 2010
- 30. वीएस -2010
मैंने कुछ दिनों पहले इस बारे में एमएस कनेक्ट में एक सुझाव दायर किया: https://connect.microsoft.com/VisualStudio/feedback/details/574242/f-debugger-support –
यह केवल एक समस्या है एक तर्क के साथ एक समारोह है। मैं सी # –