मैं समझता हूं कि bigint
एक फ़ंक्शन नहीं बल्कि एक प्रकार का कन्स्ट्रक्टर है। यही कारण है कि यह विफल हो जाता है:एफ # में बिल्कुल "bigint" क्या है?
// Won't compile
let foo = 10 |> bigint
मैं समझता हूँ कि मैं एक नया समारोह जो एक पूर्णांक स्वीकार करता है और एक bigint
देता है, और उसके बाद पाइप लाइन ऑपरेटर काम करेंगे बना सकते हैं।
हालांकि, मुझे समझ नहीं आता क्यों यह काम करता है है:
let bar = bigint 10
bigint
तो एक प्रकार निर्माता, मैं क्यों new
की आवश्यकता नहीं है? bigint
वास्तव में System.Numerics.BigInteger के कन्स्ट्रक्टर के उपनाम के रूप में परिभाषित किया गया है?
लागू करने वाले प्रकारों के उदाहरण बनाते हैं। मुझे नहीं पता था कि 'नया' वैकल्पिक था। यहां संक्षिप्त संक्षेपों की एक सूची दी गई है, लेकिन यह 'bigint' को छोड़ देती है: http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/manual/spec.html#_Toc270597684। मैं देखता हूं कि 'int64' भी एक प्रकार का संक्षेप है। हालांकि, मेरा मानना है कि एक समारोह 'int64' भी है। मुझे आश्चर्य है कि क्यों 'bigint' एक प्रकार का संक्षेप है, लेकिन' int64' एक फ़ंक्शन है। – royco
मुझे नहीं पता कि क्या कोई कारण है, जबकि "int16" जैसे अन्य सभी सांख्यिक प्रकार दोनों "प्रकार संक्षेप" और "फ़ंक्शंस" हैं, 'बिगिंट' केवल "टाइप कैचविटन" है। मैं अनुमान लगा सकता हूं कि ऐसा इसलिए है क्योंकि एकमात्र कारण "int16" जैसे कार्य मौजूद हैं, प्राथमिक आईएल पूर्णांक का खुलासा करने का एक तरीका प्रदान करना है (उदाहरण के लिए 'conv.i2') जिसमें "लाइब्रेरी" कॉल नहीं है और आमतौर पर इसका खुलासा किया जाता है अन्य भाषाओं के उपयोगकर्ताओं को "कास्ट" सुविधाओं के माध्यम से अन्य भाषाओं के उपयोगकर्ताओं के लिए। – Brian
@ ब्रायन, अंतर्दृष्टि। लेकिन मैं इंगित करूंगा कि 'दशमलव' एक रूपांतरण फ़ंक्शन फॉर्म का आनंद लेता है और केवल एक सादा संरचना है ... शायद 'बिगिन' भी एक जगह का हकदार है :) –