लिख सकता है आप में पोस्टफ़िक्स ऑपरेटरों को परिभाषित नहीं कर सकते एफ # - 4.4 Operators and Precedence देखें। आप बनाने के लिए सहमत अगर इसके बजाय यह उपसर्ग, तो आप उदाहरण के लिए, परिभाषित कर सकते हैं,
let (++) x = incr x; !x
और नीचे के रूप में इसका इस्तेमाल करते हैं:
let y = ref 1
(++) y;;
val y : int ref = {contents = 2;}
अद्यतन: के रूप में fpessoa ने बताया ++
नहीं हो सकता एक वास्तविक उपसर्ग ऑपरेटर के रूप में उपयोग किया जाता है, वास्तव में (here और there देखें, वैध F # उपसर्ग ऑपरेटरों वाले वर्णों और वर्ण अनुक्रमों के नियमों के लिए)।
दिलचस्प है, एकल +
प्रयोजन के लिए अतिभारित किया जा सकता:
let (~+) x = incr x; !x
let y = ref 1
+y;;
val y : int ref = {contents = 2;}
फिर भी अनुमति देता है, यह समझ में आता है उल्लेख करने के लिए इस तरह एक सरणी पुनरावृत्ति के विचार
नीचे
let v = [| 1..5 |]
let i = ref -1
v |> Seq.iter (fun _ -> printfn "%d" v.[+i])
"पठनीयता" के लिए कम से कम सेंट दिखता है बेवकूफ कार्यात्मक तरीके से तुलना में रेंज
[|1..5|] |> Seq.iter (printfn "%d")
जो कुछ आरंभिक रूप से मूल प्रश्नों पर टिप्पणियों में व्यक्त हुए थे।
स्रोत
2012-04-20 20:54:20
एक प्रश्न: आपको इसकी आवश्यकता क्यों है? – pad
मैं इस पर @pad के साथ हूं - जबकि प्रश्न मान्य है, और एक उत्तर प्रदान किया गया है (एक उपसर्ग ऑपरेटर के रूप में), यहां दिया गया उदाहरण एफ # शैली नहीं है। इस तरह कुछ करने के लिए शायद ही कोई अच्छा कारण है। – yamen
मैं चाहता था कि पठनीयता के लिए। (मैं सी ++/सी # पृष्ठभूमि से आया हूं)। हालांकि यह संभव था लेकिन इसे खुद नहीं बना सका। –