तरफ जा रहे है कि क्या हम कोण की तरह unitless अवधारणाओं के लिए मापक इकाई का उपयोग करना चाहिए, मान लीजिए मैं एफ # में degree
और radian
इकाइयों को परिभाषितमैं माप के एफ # इकाई पर एक्सटेंशन सदस्य को कैसे परिभाषित कर सकता हूं?
type [<Measure>] degree =
static member ToRadians (d:float<degree>) : float<radian> = d * (Math.PI * 1.<radian>)/180.0<degree>
and [<Measure>] radian =
static member ToDegrees (r:float<radian>) : float<degree> = r * 180.0<degree>/(Math.PI * 1.<radian>)
मैं उन्हें अपेक्षाकृत आसानी से की तरह
4.0<degree> |> degree.ToRadians
ऐसा लगता है उपयोग कर सकते हैं जैसे विस्तार के सदस्य भी आसान होंगे। तो मैं सिर्फ
let d = 4.0<degree>
let r = d.ToRadians()
कह सकते हैं लेकिन मैं विस्तार सदस्य स्पष्ट तरीका
type float<degree> with
member degrees.ToRadians() = degree.ToRadians(degrees)
को परिभाषित नहीं कर सकते हैं ... यह मेरे निम्न त्रुटि
error FS0010: Unexpected identifier in type name. Expected infix operator, quote symbol or other token.
हो जाता है वहाँ एक है एफ # में माप की इकाइयों पर विस्तार सदस्यों के लिए वाक्य रचनात्मक चाल, या सुविधा समर्थित है?
मैं अनुमान लगा रहा हूं कि यह समर्थित नहीं है। मैंने जो भी कोशिश की वह त्रुटि दी: 'घोषणाओं को मापने के लिए केवल स्थिर सदस्य हो सकते हैं'। – Daniel
समस्या यह है कि संकलन के बाद माप प्रकार की जानकारी हटा दी जाती है, इसलिए रनटाइम पर सब कुछ सिर्फ 'फ्लोट' होता है इसलिए एक इंस्टेंस विधि को कॉल करने से –
@jpalmer नहीं लगता है। संकलन विस्तार के दौरान सदस्यों को स्थिर रूप से हल किया जाता है। –