मैं पूर्णांकों की तरह कुछ बुनियादी आदिम प्रकार पर सदस्य की कमी का समर्थन एक स्थिर विस्तार विधि को लागू करने की जरूरत है, तैरता है, आदि यहाँ पर हस्ताक्षर किए पूर्णांक के लिए मेरे कोड है:स्टेटिक विस्तार सदस्य की कमी समर्थन तरीकों
module MyOperators =
let inline foo (x : ^T) = (^T : (static member Foo : ^T -> int) (x))
type System.Int32 with
static member Foo(x : Int32) = 7 // static extension
टेस्ट कोड:
The type 'System.Int32' does not support any operators named 'Foo'
डब्ल्यू:
open MyOperators
let x = foo 5 // x should be 7
लेकिन संकलक त्रुटि के साथ शिकायत क्या मैं यहाँ लापता हूँ? धन्यवाद!
यदि मैं आपको सही ढंग से समझ रहा हूं, तो मुझे लगता है कि यदि आप ऐसा कर सकते हैं, तो यह विशेष रूप से अच्छा विचार नहीं है। बुनियादी भाषा तंत्र के साथ छेड़छाड़ ने हमेशा मुझे एक विरोधी पैटर्न के रूप में मारा है। इस तथ्य के बारे में सोचें कि भविष्य में किसी भी समय आपके अलावा किसी को भी इस कोड पर काम करना पड़ सकता है। भविष्य में किसी बिंदु पर आपको यह कोड स्वयं भी बनाए रखना पड़ सकता है जब आपने थोड़ी देर के लिए इस पर काम नहीं किया है। आंतरिक प्रकारों में संशोधन कई "डब्ल्यूटीएफ" का कारण बन सकता है? क्षणों। –