Miklix

डायनामिक्स एएक्स 2012 मा एक्स ++ कोडबाट गणनको तत्वहरूमा कसरी पुनरावृत्ति गर्ने

प्रकाशित: २०२५ फेब्रुअरी १५: २३:१६:०७ UTC
पछिल्लो पटक अद्यावधिक गरिएको: २०२६ जनवरी १२: ०८:४२:२८ UTC

यस लेखले X++ कोड उदाहरण सहित Dynamics AX २०१२ मा आधार enum को तत्वहरूलाई कसरी गणना गर्ने र लुप गर्ने भनेर वर्णन गर्दछ।


यो पृष्ठलाई सकेसम्म धेरै मानिसहरूको पहुँचयोग्य बनाउनको लागि अंग्रेजीबाट मेसिन अनुवाद गरिएको थियो। दुर्भाग्यवश, मेसिन अनुवाद अझै पूर्ण प्रविधि होइन, त्यसैले त्रुटिहरू हुन सक्छन्। यदि तपाईं चाहनुहुन्छ भने, तपाईं यहाँ मूल अंग्रेजी संस्करण हेर्न सक्नुहुन्छ:

How to Iterate Over the Elements of an Enum from X++ Code in Dynamics AX 2012

यस पोस्टमा भएको जानकारी Dynamics AX २०१२ R3 मा आधारित छ। यो अन्य संस्करणहरूको लागि मान्य हुन पनि सक्छ वा नहुन पनि सक्छ।

म हालसालै एउटा फारम सिर्जना गर्दै थिएँ जसमा एनममा प्रत्येक तत्वको लागि मान प्रदर्शन गर्न आवश्यक थियो। म्यानुअल रूपमा फिल्डहरू सिर्जना गर्नुको सट्टा (र यदि एनम कहिल्यै परिमार्जन गरिएको छ भने फारम कायम राख्न आवश्यक छ), मैले यसलाई गतिशील रूपमा कार्यान्वयन गर्ने निर्णय गरें ताकि यसले रन टाइममा डिजाइनमा फिल्डहरू स्वचालित रूपमा थप्नेछ।

यद्यपि, मैले चाँडै नै पत्ता लगाएँ कि वास्तवमा enum मा मानहरू दोहोर्याउनु, जबकि तपाईंलाई कसरी थाहा भएपछि पर्याप्त सजिलो छ, अलि भ्रमित छ।

तपाईंले स्पष्ट रूपमा DictEnum कक्षाबाट सुरु गर्नुपर्छ। तपाईंले देख्नुहुनेछ, यस कक्षामा अनुक्रमणिका र मान दुवैबाट नाम र लेबल जस्ता जानकारी प्राप्त गर्ने धेरै विधिहरू छन्।

अनुक्रमणिका र मान बीचको भिन्नता यो हो कि अनुक्रमणिका भनेको एनममा रहेको तत्वको संख्या हो, यदि एनमका तत्वहरूलाई शून्यबाट सुरु गरेर क्रमिक रूपमा अंकित गरिएको थियो भने, मान भनेको तत्वको वास्तविक "मान" गुण हो। धेरैजसो एनमहरूमा ० बाट क्रमिक रूपमा अंकित गरिएको मानहरू भएको हुनाले, तत्वको अनुक्रमणिका र मान प्रायः समान हुनेछ, तर निश्चित रूपमा सधैं होइन।

तर तपाईंलाई कसरी थाहा हुन्छ कि enum मा कुन मानहरू छन्? यो त्यहिँबाट भ्रमित हुन्छ। DictEnum वर्गमा values() नामक विधि छ। तपाईंले यो विधिले enum को मानहरूको सूची फिर्ता गर्ने अपेक्षा गर्न सक्नुहुन्छ, तर त्यो स्पष्ट रूपमा धेरै सजिलो हुनेछ, त्यसैले यसको सट्टा यसले enum मा समावेश मानहरूको संख्या फिर्ता गर्छ। यद्यपि, मानहरूको संख्याको वास्तविक मानहरूसँग कुनै सम्बन्ध छैन, त्यसैले तपाईंले यो संख्यालाई अनुक्रमणिका-आधारित विधिहरू कल गर्न आधारको रूपमा प्रयोग गर्न आवश्यक छ, मान-आधारित विधिहरू होइन।

यदि उनीहरूले यो विधिलाई index() नाम दिएको भए, यो कम भ्रमित हुने थियो ;-)

यो पनि ध्यानमा राख्नुहोस् कि enum मानहरू (र स्पष्ट रूपमा यी "अनुक्रमणिकाहरू") ० बाट सुरु हुन्छन्, X++ मा array र कन्टेनर अनुक्रमणिकाहरू भन्दा फरक, जुन १ बाट सुरु हुन्छन्, त्यसैले enum मा तत्वहरू लुप गर्न तपाईंले यस्तो केहि गर्न सक्नुहुन्छ:

DictEnum dictEnum = new DictEnum(enumNum(SalesStatus));
Counter  c;
;

for (c = 0; c < dictEnum.values(); c++)
{
    info(strFmt('%1: %2', dictEnum.index2Symbol(c), dictEnum.index2Label(c)));
}

यसले enum मा रहेको प्रत्येक तत्वको प्रतीक र लेबललाई infolog मा आउटपुट गर्नेछ।

थप पढाइ

यदि तपाईंलाई यो पोस्ट मन पर्यो भने, तपाईंलाई यी सुझावहरू पनि मन पर्न सक्छन्:


ब्लुस्कीमा सेयर गर्नुहोस्फेसबुक मा शेयर गर्नुहोस्लिंक्डइनमा सेयर गर्नुहोस्Tumblr मा सेयर गर्नुहोस्X मा सेयर गर्नुहोस्लिंक्डइनमा सेयर गर्नुहोस्Pinterest मा पिन गर्नुहोस्

मिकेल क्रिस्टेनसेन

लेखकको बारेमा

मिकेल क्रिस्टेनसेन
मिकेल miklix.com का निर्माता र मालिक हुन्। उनीसँग एक पेशेवर कम्प्युटर प्रोग्रामर/सफ्टवेयर विकासकर्ताको रूपमा २० वर्ष भन्दा बढीको अनुभव छ र हाल उनी एक ठूलो युरोपेली आईटी निगममा पूर्ण-समय कार्यरत छन्। ब्लगिङ नगर्दा, उनी आफ्नो खाली समय विभिन्न रुचि, शौक र गतिविधिहरूमा बिताउँछन्, जुन केही हदसम्म यस वेबसाइटमा समेटिएका विषयहरूको विविधतामा प्रतिबिम्बित हुन सक्छ।