क्या आपके स्वयं के ऑपरेटरों को एफ # में परिभाषित करने का कोई तरीका है?क्या आप अपने स्वयं के ऑपरेटरों को एफ # में परिभाषित कर सकते हैं?
यदि ऐसा है तो किसी ने मुझे इस के लिए एक उदाहरण दे सकते हैं? मैंने संक्षेप में खोज की, लेकिन कुछ भी नहीं मिला।
क्या आपके स्वयं के ऑपरेटरों को एफ # में परिभाषित करने का कोई तरीका है?क्या आप अपने स्वयं के ऑपरेटरों को एफ # में परिभाषित कर सकते हैं?
यदि ऐसा है तो किसी ने मुझे इस के लिए एक उदाहरण दे सकते हैं? मैंने संक्षेप में खोज की, लेकिन कुछ भी नहीं मिला।
हाँ:
let (+.) x s = [for y in s -> x + y]
let s = 1 +. [2;3;4]
अक्षर हैं जो एक एफ # ऑपरेटर में इस्तेमाल किया जा सकता section 3.7 of the spec में सूचीबद्ध हैं। वे !%&*+-./<=>@^|~
और पहले के बाद किसी भी चरित्र के लिए ?
हैं। प्राथमिकता और स्थिरता ऑपरेटर के पहले चरित्र द्वारा निर्धारित की जाती है (कल्पना देखें)।
आप अपनी खुद की जाने बाध्य ऑपरेटरों बना सकते हैं के रूप में मैं ऊपर किया है, जो मामले में वे जैसे जाने-बाउंड कार्यों काम करते हैं। तुम भी एक प्रकार पर सदस्यों के रूप में उन्हें परिभाषित कर सकते हैं:
type 'a Wrapper = Wrapper of 'a with
static member (+!)(Wrapper(x), Wrapper(y)) = Wrapper(x+y)
let w = (Wrapper 1) +! (Wrapper 2)
इस मामले में, आप पहले से परिभाषित किया है करने के लिए एक जाने-बाउंड समारोह ऑपरेटर का उपयोग करने की जरूरत नहीं है; एफ # इसे इस प्रकार मिलेगा। आप इस इनलाइन परिभाषाओं का उपयोग करने का विशेष रूप से अच्छा लाभ ले सकते हैं:
let inline addSpecial a b = a +! b
let w2 = addSpecial w (Wrapper 3)
इस आगे भी ले रहा है, तो आप इनलाइन साथ ही अपने प्रकार पर ऑपरेटरों कर सकते हैं, ताकि आप उन्हें के उदाहरणों के एक और भी व्यापक विविधता पर उपयोग कर सकते हैं आपकी कक्षा:
type 'a Wrapper = Wrapper of 'a with
static member inline (+!)(Wrapper(x), Wrapper(y)) = Wrapper(x+y)
let wi = (Wrapper 1) +! (Wrapper 2)
let wf = (Wrapper 1.0) +! (Wrapper 2.0)
let wi2 = addSpecial wi wi
let wf2 = addSpecial wf wf
सेक्शन 4.4 (http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/manual/spec.html) में इन्फिक्स ऑपरेटरों के बारे में कुछ और जानकारी है और कौन से वर्ण स्वीकार्य हैं। – nlucaroni
आपके भविष्य के संदर्भ जोन के लिए - अवधारणा को ऑपरेटर ओवरलोडिंग कहा जाता है। यदि आप Google F # और ऑपरेटर ओवरलोडिंग करते हैं तो आपको इस विषय पर काफी कुछ मिल जाएगा। –
धन्यवाद, भविष्य में ऐसा करेंगे। –