मैथमैटिका की प्रतीकात्मक और संख्यात्मक क्षमताओं के साथ खेलने के बाद, मुझे यह एक सभ्य प्रोग्रामिंग भाषा भी मिलती है। हालांकि, सामान्य उद्देश्य वाली भाषा के रूप में इसे कम आकर्षक बनाने वाला कुछ सी-जैसे संरचना डेटा प्रकार (या पास्कल में ज्ञात रिकॉर्ड प्रकार) की कमी है। मैं इस समस्या के आसपास कैसे हो सकता हूं?गणित में डेटा प्रकार का निर्माण?
उत्तर
अगर मैं आपके सवाल का सही ढंग से समझ, तो आप बस बातें इस प्रकार लिख सकते हैं:
x[foo] = bar x[bar] = baz x[1] = 7 x[7] = 1 ?x
तो किसी भी विशिष्ट सूचकांक के लिए डेटा का उपयोग करने के लिए सिर्फ एक ही टाइप (जैसे, x[1]
7
वापस आ जाएगी, x[foo]
वापस आ जाएगी bar
)।
अद्यतन: मेथेमेटिका 10 Association
है, जो एक struct
का सबसे महत्वपूर्ण गुण के कई है शुरू की है। (new answer देखें।) इस उत्तर का मूल, कुछ हद तक बहिष्कृत संस्करण नीचे है।
आप उपयोग कर सकते हैं एक मेथेमेटिका नियम एक सी की तरह struct डेटा प्रकार की नकल करने सूचीबद्ध करता है। उदा,:।
person = {firstName -> "John", lastName -> "Doe"}
फिर आप रिकॉर्ड के क्षेत्रों /.
ऑपरेटर का उपयोग करके पहुँच सकते हैं:
firstName /. person
पैदावार John
।
lastName /. person
Doe
पैदा करता है।
सूची में एक रिकार्ड के एक क्षेत्र, आगे जोड़ते अद्यतन क्षेत्र अद्यतन करने के लिए:
PrependTo[person , firstName -> "Jane"]
firstName /. person
तो Jane
अर्जित करता है।
गणितtransformation rules पर दस्तावेज़ भी देखें।
प्रीपेन्डिंग का उपयोग करके कुछ बदलाव करना मतलब है कि व्यक्ति सूची में कई अप्रयुक्त नियम दिखाई देंगे। बहुत कुशल नहीं है। –
ध्यान दें कि गणित 10 ने ['एसोसिएशन '] (http://reference.wolfram.com/language/ref/Association.html) पेश किया है, जिसमें' संरचना 'के कई सबसे महत्वपूर्ण गुण हैं। [नया उत्तर] देखें (http://stackoverflow.com/a/33465106/330202)। –
इस तरह से काम कर सकते हैं:
x[foo] = bar
x[bar] = baz
x[1] = 7
x[7] = 1
x[c] = {{1,2,3},{4,5,6}}
और यह भी एक सूची क्षेत्र के तत्वों को बदलने के लिए आप ऐसा निम्न कर सकते हैं:
x[c] = ReplacePart[x[c], {1, 1} -> 8]
जो रिटर्न:
x[c] = {{8,2,3},{4,5,6}}
मेथेमेटिका 10 ने Association
पेश किया है, जिसमेंके कई सबसे महत्वपूर्ण गुण हैं।
someData = <| "name" -> "Bob", "age" -> 23 |>
In[1]:= someData["name"]
Out[1]= Bob
In[2]:= someData["age"]
Out[2]= 23
In[3]:= someData[[2]]
Out[3]= 23
अधिक जानकारी के लिए, (Association
पर बनाता है जो)
Association
DataSet
देख- Wolfram गाइड: Elementary introduction to DataSets और Fast introduction for programmers।
- गणित। प्रश्न: How to make use of Associations और Struct equivalent in Mathematica?
- This HackerNews comment।
- 1. गणित डेटा प्लॉट मैट्रिक्स डेटा
- 2. मैं प्रारूप/व्याख्या गणित निर्माण में पुनरावृत्ति को कैसे रोकूं?
- 3. गणित
- 4. दिनांक प्रकार का दिनांक डेटा प्रकार दिनांक
- 5. गणित में श्रोडिंगर का समीकरण
- 6. गणित
- 7. हास्केल में सूचीबद्ध: डेटा प्रकार या सार डेटा प्रकार?
- 8. एक्सेल में डेटा के प्रतिनिधित्व जैसे पेड़ का निर्माण करें?
- 9. गणित
- 10. गणित
- 11. कोर डेटा में स्थानीयकृत स्ट्रिंग प्रकार का प्रतिनिधित्व कैसे करें?
- 12. गणित
- 13. डेटा प्रकार
- 14. डेटा प्रकार
- 15. डब्ल्यूसीएफ में जटिल डेटा प्रकार?
- 16. गणित
- 17. गणित का पाठ
- 18. स्प्रिंटफ गणित में समकक्ष?
- 19. वैकल्पिक नामित गणित गणित
- 20. क्या सी # में अंतर्निहित रूप से एक प्रकार का निर्माण करने का कोई तरीका है?
- 21. गणित में संख्यात्मक एकीकरण डेटा की दो सूचियां
- 22. गणित
- 23. गणित
- 24. फाइलों (गणित)
- 25. गणित
- 26. गणित
- 27. गणित
- 28. अलग डेटा प्रकार डेटा (C++)
- 29. गणित
- 30. गणित
चीजों को करने का यह तरीका सक्र द्वारा सुझाए गए नियम दृष्टिकोण पर एक वास्तविक लाभ है: यह आपको "संरचना" के "फ़ील्ड" को सीधे तरीके से बदलने की अनुमति देता है। – Pillsy
आपके उत्तर में कोई समस्या है: यदि कोई "फ़ील्ड" एक सूची है, तो इसके तत्व अलग-अलग नहीं बदला जा सकता है। उदाहरण के लिए, x [foo] = {1,2}; x [foo] [[1]] = 3 (* सूची तत्व को बदलने का प्रयास *) परिणामस्वरूप एक त्रुटि होगी, क्योंकि x [foo] एक Lvalue नहीं है। तो यह अभी भी सी संरचना कार्यक्षमता को पूरी तरह से प्रतिस्थापित नहीं करता है। – felix
आपको पुरानी मान को पूरी तरह से प्रतिस्थापित करने की आवश्यकता है, न केवल सूची के एक ही मूल्य को बदलें: f ["foo"] = {1, 2}; एफ ["foo"] = (ReplacePart [f ["foo"], 1 -> 3]) इसके अलावा, मैं कुंजी के लिए स्ट्रिंग या पूर्णांक का उपयोग नहीं करता, प्रतीक नहीं। सेट के लिए अपवैल सेट करके आप कुछ मुश्किल व्यवसाय भी कर सकते हैं। –