प्रोटोटाइप के Enumerable # एफ # में बांधना?

वोट
2

जावास्क्रिप्ट में, प्रोटोटाइप पुस्तकालय का उपयोग कर, निम्नलिखित कार्यात्मक निर्माण संभव है:

var words = [aqueous, strength, hated, sesquicentennial, area];
words.pluck('length');
//-> [7, 8, 5, 16, 4]

ध्यान दें कि यह उदाहरण के कोड के बराबर है

words.map( function(word) { return word.length; } );

मैंने सोचा अगर कुछ इसी तरह एफ # में संभव है:

let words = [aqueous; strength; hated;sesquicentennial; area]
//val words: string list
List.pluck 'Length' words
//int list = [7; 8; 5; 16; 4]

लिखने के बिना:

List.map (fun (s:string) -> s.Length) words

यह मेरे लिए काफी उपयोगी प्रतीत क्योंकि तब आप उन तक पहुँचने के लिए हर संपत्ति के लिए काम करता है लिखने के लिए की जरूरत नहीं है जाएगा।

16/09/2008 को 19:24
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


2 जवाब

वोट
1

प्रोटोटाइप का pluckहै कि जावास्क्रिप्ट में का लाभ लेता है object.method()के रूप में ही है object[method]

दुर्भाग्य से आप कॉल नहीं कर सकते String.Lengthक्योंकि या तो यह एक स्थिर विधि नहीं है। आप फिर भी उपयोग कर सकते हैं:

#r "FSharp.PowerPack.dll" 
open Microsoft.FSharp.Compatibility
words |> List.map String.length 

http://research.microsoft.com/fsharp/manual/FSharp.PowerPack/Microsoft.FSharp.Compatibility.String.html

हालांकि, का उपयोग कर Compatibilityशायद अपने कोड को देखकर लोगों के लिए चीजों को और अधिक भ्रमित कर देगा।

17/09/2008 को 02:01
का स्रोत उपयोगकर्ता

वोट
2

मैं एफ # मेलिंग सूची पर आपके अनुरोध को देखा। आशा है कि मैं मदद कर सकते हैं।

आप प्रकार विस्तार और प्रतिबिंब का उपयोग इस अनुमति देने के लिए कर सकता है। हम साधारण प्लक समारोह के साथ सामान्य सूची प्रकार का विस्तार। फिर हम किसी भी सूची पर प्लक () का उपयोग कर सकते हैं। एक अज्ञात संपत्ति अपने ही सामग्री के रूप में त्रुटि तार के साथ एक सूची प्रदान करेगा।

type Microsoft.FSharp.Collections.List<'a> with
    member list.pluck property = 
        try 
            let prop = typeof<'a>.GetProperty property 
            [for elm in list -> prop.GetValue(elm, [| |])]
        with e-> 
            [box <| "Error: Property '" + property + "'" + 
                            " not found on type '" + typeof<'a>.Name + "'"]

let a = ["aqueous"; "strength"; "hated"; "sesquicentennial"; "area"]

a.pluck "Length" 
a.pluck "Unknown"

जो इंटरैक्टिव विंडो में अनुवर्ती परिणाम पैदा करता है:

> A.pluck "लंबाई" ;; 
वैल यह: obj सूची = [7; 8; 5; 16; 4]

> A.pluck "अज्ञात" ;;
वैल यह: obj सूची = [ "त्रुटि: संपत्ति 'अज्ञात' प्रकार पर नहीं मिला 'स्ट्रिंग'"]

नमस्कार,

DannyAsher

>>>>>

नोट: का उपयोग करते समय <pre> कोण के आसपास कोष्ठक

< 'एक>
नहीं दिखा था, हालांकि पूर्वावलोकन विंडो में यह ठीक देखा। बैकटिक मेरे लिए काम नहीं किया। आप रंगीन संस्करण है जो सब गलत है सहारा लेना पड़ा। मुझे लगता है मैं यहाँ फिर से पोस्ट करेंगे जब तक FSharp वाक्य रचना पूरी तरह से समर्थित है नहीं लगता।

17/09/2008 को 17:19
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more