अंतर्निहित के कार्यान्वयन में कुछ जादू शामिल है, ताकि
विकल्प वैल्यू [नाम] के बराबर है
ऑप्शन वैल्यू [एफ, नेम] , जहां
f उस परिवर्तन के नियम के बाएं हाथ के सिर में है
OptionValue [name] प्रकट होता है।
क्या किसी के पास यह विचार है कि
Options के समान कुछ कैसे प्राप्त करें, यानी एक
ऑटोऑप्टेशंस [] जो परिवर्तन नियम के बाएं हाथ पर प्रतीक के लिए निर्धारित विकल्पों को हल करेगा, जिसमें
स्वतः ऑप्शन [] प्रकट होता है? स्पष्टता के लिए, जो मैं देख रहा हूं वह तरीका है
विकल्प [foo] = {बार-> 1}; Foo [OptionsPattern []]: = ऑटोऑप्शन [] foo []
आउटपुट
{बार-> 1}
अंतिम लक्ष्य कुछ भी करने के लिए बिना अनुरोधित कुछ करना है, लेकिन किसी भी परिभाषा के आरएचएस।
एक सरल, बहुत योजनाबद्ध संस्करण: <पूर्व>
मॉड्यूल [{की कोशिश की}, असुरक्षित [सेट डिलीएटेड]; सेट डिलीएटेड [f_ [आर्ग्स ___, ऑप्टप्ट: ऑप्शनपेटर्न []], आरएएस_एआर /; फ्रीक्यू [अपरिव्वाइवलेट [आरएएस], ऑटोऑप्टेशंस []]: = ब्लॉक [{ट्रांजेल = ट्रू}, एफ [एजीआर, ओप्प्ट]: = ब्लॉक [[ऑटो ऑप्शन], ऑटो ऑप्शन [] = विकल्प [एफ]; Rhs]] /; ! TrueQ [कोशिश की]; [सेट डिलाएटेड] को सुरक्षित रखें;]
आपका उपयोग:
में [8]: = विकल्प [foo] = {बार - & gt; 1}; Foo [OptionsPattern []]: = ऑटोऑप्शन [] फ़ू [] आउट [10] = {बार - & gt; 1}
ध्यान दें कि जब स्पष्ट विकल्प भी पारित हो जाते हैं तो यह काम नहीं करेगा - उनके लिए लेखांकन कुछ और काम है, और यह आमतौर पर एक अच्छा अभ्यास नहीं है क्योंकि मैं अतिभारित
SetDelayed - लेकिन आपने इसके लिए पूछा और आप इसे प्राप्त करें
Comments
Post a Comment