2008-12-23 10 views
7

मुझे पता है कि f # सूची सी # सूची में समान नहीं है। सी # अनुप्रयोग से f # लाइब्रेरी में इंक की सूची उत्तीर्ण करने में सक्षम होने के लिए मुझे क्या करने की आवश्यकता है? एक बार यह एफ # कोड में होने पर डेटा पर पैटर्न मिलान का उपयोग करने में सक्षम होना चाहता हूं।सी # से एफ # तक की सूची को पास करने के लिए मैं क्या कर सकता हूं?

उत्तर

3

यहां यह है कि मैं इसे कैसे समाप्त कर रहा हूं।

FSharp कोड:

let rec FindMaxInList list = 
    match list with 
    | [x] -> x 
    | h::t -> max h (FindMaxInList t) 
    | [] -> failwith "empty list" 

let rec FindMax (array : ResizeArray<int>) = 
    let list = List.ofSeq(array) 
    FindMaxInList list 

सी तीव्र कोड:

List<int> myInts = new List<int> { 5, 6, 7 }; 
    int max = FSModule.FindMax(myInts); 
0

आप एफ # परियोजनाओं से सी # असेंबली का संदर्भ दे सकते हैं। एक संदर्भित असेंबली के माध्यम से अपनी सूची का पर्दाफाश करें।

8

आप

Seq.toList : IEnumerable<'a> -> list<'a> 

एक एफ # सूची के लिए किसी भी IEnumerable<'a>seq कन्वर्ट करने के लिए उपयोग कर सकते हैं। ध्यान दें कि एफ # सूचियां अपरिवर्तनीय हैं; यदि आप म्यूटेबल सूची के साथ काम करना चाहते हैं, तो आपको कुछ विशेष करने की आवश्यकता नहीं है, लेकिन आप पैटर्न मिलान का उपयोग करने में सक्षम नहीं होंगे। या, बल्कि, System.Collections.Generic.List<'a> के लिए सक्रिय पैटर्न परिभाषित कर सकते हैं; यह सिर्फ एक बुरा विचार है।

+0

बस सोच रहा है, लेकिन क्यों नहीं एक व्यक्ति के कुछ सक्रिय पैटर्न है कि सी # सूचियों पर काम लिखना चाहते हैं? – Juliet

1

आप इनट्स का अनुक्रम पास कर सकते हैं - यह मूल रूप से कुछ भी है जो IEnumerable<int> का समर्थन करता है।

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

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