अमृत ​​- संरचनाएं

संरचनाएं नक्शे के शीर्ष पर निर्मित एक्सटेंशन हैं जो संकलन-समय की जांच और डिफ़ॉल्ट मान प्रदान करते हैं।

संरचनाओं को परिभाषित करना

एक संरचना को परिभाषित करने के लिए, बाधा निर्माण का उपयोग किया जाता है -

defmodule User do
   defstruct name: "John", age: 27
end

डिफ़ॉल्‍ट के साथ उपयोग की जाने वाली कीवर्ड सूची यह परिभाषित करती है कि उनके डिफ़ॉल्ट मानों के साथ संरचना का क्या क्षेत्र होगा। संरचनाएं उन मॉड्यूल का नाम लेती हैं जिन्हें वे परिभाषित करते हैं। ऊपर दिए गए उदाहरण में, हमने उपयोगकर्ता नाम की एक संरचना को परिभाषित किया है। अब हम मानचित्र बनाने के लिए उपयोग किए जाने वाले समान सिंटैक्स का उपयोग करके उपयोगकर्ता संरचनाएँ बना सकते हैं -

new_john = %User{})
ayush = %User{name: "Ayush", age: 20}
megan = %User{name: "Megan"})

उपरोक्त कोड मानों के साथ तीन अलग-अलग संरचनाएं उत्पन्न करेगा -

%User{age: 27, name: "John"}
%User{age: 20, name: "Ayush"}
%User{age: 27, name: "Megan"}

संरचनाएं संकलन-समय की गारंटी प्रदान करती हैं कि केवल फ़ील्ड (और उन सभी को) जो अवरोध के माध्यम से परिभाषित की गई हैं, उन्हें एक संरचना में मौजूद होने की अनुमति होगी। मॉड्यूल में संरचना तैयार करने के बाद आप अपने स्वयं के क्षेत्रों को परिभाषित नहीं कर सकते।

एक्सेसिंग और अपडेटिंग स्ट्रक्चर

जब हमने मानचित्रों पर चर्चा की, तो हमने दिखाया कि हम मानचित्र के क्षेत्रों को कैसे एक्सेस और अपडेट कर सकते हैं। समान तकनीकों (और समान सिंटैक्स) के रूप में अच्छी तरह से संरचना पर लागू होते हैं। उदाहरण के लिए, यदि हम पूर्व में बनाए गए उपयोगकर्ता को अपडेट करना चाहते हैं, तो -

defmodule User do
   defstruct name: "John", age: 27
end
john = %User{}
#john right now is: %User{age: 27, name: "John"}

#To access name and age of John, 
IO.puts(john.name)
IO.puts(john.age)

जब उपरोक्त कार्यक्रम चलाया जाता है, तो यह निम्नलिखित परिणाम उत्पन्न करता है -

John
27

किसी संरचना में एक मूल्य को अद्यतन करने के लिए, हम फिर से उसी प्रक्रिया का उपयोग करेंगे जिसका उपयोग हमने मानचित्र अध्याय में किया था,

meg = %{john | name: "Meg"}

पैटर्न का उपयोग पैटर्न मिलान में भी किया जा सकता है, दोनों विशिष्ट कुंजी के मूल्य के साथ-साथ मिलान के लिए यह सुनिश्चित करने के लिए कि मिलान मूल्य मिलान वाले मूल्य के समान संरचना है।