के लिए विशेष साजिश कार्यों में विकल्पों को पारित करने में समस्याएं यह एक विशेषज्ञ के लिए जल्दी होनी चाहिए, लेकिन मैं विकल्पों के साथ कार्यों को परिभाषित करने में अपेक्षाकृत नया हूं। मुझे लगता है कि करने की जरूरत है मेरी समारोह में एक वैकल्पिक पैरामीटरगणित
- :
MyPlotFunction[params_, optionalparameter_List:{1,2,3}, opts:OptionsPattern[]]:= Plot [ stuff, {x,0,1}, [email protected][{opts},[email protected]]]; Options[MyPlotFunction] = { PlotRange->{-5,5}, Frame->True, ... other plot options};
चार मामूली बारीकियों रहे हैं: यहाँ मैं क्या कोशिश की है की एक योजनाबद्ध, मैं कोड दिखा के बाद के बारे में समझाएंगे है पूर्णांक की एक सूची बनें।
- मैं प्लॉट के किसी भी विकल्प के साथ फ़ंक्शन को कॉल करने की क्षमता चाहता हूं, विशेष रूप से तीसरे पंक्ति में निर्दिष्ट डिफ़ॉल्ट मानों के अलावा अन्य मानों का उपयोग करना चाहता हूं।
- मैं कुछ विकल्पों के लिए डिफ़ॉल्ट मान रखना चाहता हूं।
- मैं संभावित रूप से फ़ंक्शन में अन्य विकल्प रखना चाहता हूं, इसलिए यह गारंटी नहीं है कि सभी विकल्पों को साजिश के माध्यम से पारित किया जाना चाहिए।
लेकिन मेरे ऊपर जो कुछ है, वह काम नहीं करता है। मेरे द्वारा सेट किए गए डिफ़ॉल्ट विकल्प अनदेखा किए जाते हैं, फिर भी वे मेरे फ़ंक्शन के लिए ??MyPlotFunction
जानकारी में दिखाई देते हैं। यदि आप लोग अभी तक त्रुटि नहीं खोज सकते हैं तो मैं उदाहरण दूंगा।
संपादित करें: उदाहरण वह काम नहीं करता:
SimplePlot[t_,opts:OptionsPattern[{PlotRange->{-4,4},Frame->True}]]:= Plot[2x+t,{x,0,1},opts];
विफल, डिफ़ॉल्ट विकल्प नजरअंदाज कर दिया है।SimplePlot[t_,opts:OptionPattern[]]:= Plot[2x+t],{x,0,1},opts]; Options[SimplePlot] = {PlotRange->{-4,4},Frame->True};
विफलता, डिफ़ॉल्ट विकल्प को अनदेखा किया जाता है।SimplePlot[t_,opts__:{PlotRange->{-4,4},Frame->True}]:= Plot[2x+t,{x,0,1},opts];
डिफ़ॉल्ट विकल्प एक नंगे कॉल के साथ काम करते हैं, लेकिन अगर इन विकल्पों में या किसी अन्य साजिश विकल्प में से एक ओवरराइड की गई है शेष चूक खो जाते हैं।FilterRules[{opts, Options[MyPlotFunction]}, [email protected]]
यहाँ एक सरल उदाहरण है:: तो आप स्पष्ट रूप से किसी भी गैर डिफ़ॉल्ट विकल्प सेटिंग्स में शामिल करने की जरूरत है
आप और अधिक विस्तार के साथ इस संपादित कर सकते हैं: ब्रेट के जवाब देने के लिए, के बाद से दिए गए विकल्पों में पहले की विषय वस्तु के विकल्पों बाद में दिया जाता है, और के बाद से प्लॉट के लिए विकल्प के रूप में एक सूची दी जा सकती है, तो आप कुछ इस तरह लिख सकते हैं। क्या सामान आप प्लॉट कर रहे हैं? यदि ऐसा है तो इसे साजिश के लिए तर्क के रूप में डाल दें। यदि नहीं तो यह कहां जाता है? यदि आप समझाते हैं कि वैकल्पिक पैरामीटर क्या करना है तो यह भी मदद कर सकता है। आपके फ़ंक्शन में बंद नहीं है "]" लेकिन मुझे लगता है कि यह एक कट और पेस्ट त्रुटि है। आपको यहां और मैथ ग्रुप पर विकल्पवैल्यू, फ़िल्टररल्स और अन्य विकल्पों के बारे में अन्य चर्चाएं मिलेंगी, इस पर आपको विकल्पों का उपयोग करने में मदद करनी चाहिए। –