/ / एक संक्षिप्त नाम कैसे दिया जाए? - कास्टिंग, एफ #

एक प्रकार के संक्षेप में कैसे डाला जाए? - कास्टिंग, एफ #

type floatType = float32
let a = 5.0
let b = float32 a // Works
let b" = floatType b // Does not work

क्या एक प्रकार का संक्षिप्त नाम देना संभव होगा?

उत्तर:

जवाब के लिए 2 № 1

लिखते समय float32 a, आप फ़ंक्शन का उपयोग कर रहे हैं Microsoft.FSharp.Core.Operators.float32, जो इकाइयों के बिना एकल-सटीक फ्लोट में एक स्पष्ट रूपांतरण करता है।

यदि आप इसी तरह के उपयोग की अनुमति देना चाहते हैं floatType, आप अपनी परिभाषा में निम्नलिखित जोड़ सकते हैं:

let inline floatType a = float32 a

अब आपका कोड काम करना चाहिए।


जवाब के लिए 4 № 2

हां, कास्टिंग के लिए एक प्रकार के उपनाम का उपयोग करना संभव है, लेकिन आप कास्टिंग नहीं कर रहे हैं, यह कास्टिंग के लिए वाक्यविन्यास नहीं है। आपके उदाहरण में आप का उपयोग कर रहे हैं। स्पष्ट रूपांतरण.

कास्टिंग एक अलग चीज है, यह "सुपर-क्लास (अप-कास्टिंग) या एक उप-क्लास (डाउन-कास्टिंग) के लिए" कनवर्ट करता है ", अपने उदाहरण के इस संशोधन को देखें:

type floatType = float32
let a = box 5.0f
let b  = a :?> float32
let b" = a :?> floatType

यह उदाहरण डाउन-कास्टिंग है और जैसा कि आप देख सकते हैं कि यह उर्फ ​​के साथ काम करता है।

तो यह करने के लिए से संभव नहीं है float सेवा मेरे float32, बिना एनोटेशन के भी।