Erlang 21

proplists




erlang

proplists

मॉड्यूल

proplists

मॉड्यूल सारांश

संपत्ति सूची के लिए समर्थन कार्य।

विवरण

प्रॉपर्टी लिस्ट सामान्य सूचियाँ हैं जिनमें या तो टुपल्स के रूप में प्रविष्टियाँ हैं, जिनके पहले तत्व लुकअप और इंसर्शन या परमाणुओं के लिए उपयोग की जाने वाली कुंजियाँ हैं, जो ट्यूपल्स {Atom, true} लिए शॉर्टहैंड का काम करती हैं। (अन्य शर्तों को सूचियों में अनुमति दी गई है, लेकिन इस मॉड्यूल द्वारा अनदेखा किया गया है।) यदि किसी सूची में एक निश्चित कुंजी के लिए एक से अधिक प्रविष्टि हैं, तो पहली घटना सामान्य रूप से किसी भी बाद में ओवरराइड करती है (टुपल्स की आड़ के बावजूद)।

संपत्ति की सूची विरासत में मिली संपत्तियों का प्रतिनिधित्व करने के लिए उपयोगी होती है, जैसे कि ऐसे फ़ंक्शन को दिए गए विकल्प जहां उपयोगकर्ता डिफ़ॉल्ट सेटिंग्स, ऑब्जेक्ट प्रॉपर्टी, एनोटेशन, और इसी तरह से ऑप्शन को निर्दिष्ट कर सकता है।

दो कुंजियाँ समान मानी जाती हैं यदि वे मेल खाती हैं ( =:= )। यही है, संख्याओं की तुलना मूल्य के बजाय शाब्दिक रूप से की जाती है, इसलिए, उदाहरण के लिए, 1 और 1.0 अलग-अलग कुंजी हैं।

जानकारी का प्रकार

property() = atom() | tuple()

निर्यात

append_values ​​(कुंजी, सूची) -> सूची

प्रकार

get_all_values/2 समान, लेकिन प्रत्येक मूल्य को एक सूची में लपेटा जाता है जब तक कि यह पहले से ही एक सूची न हो। सूचियों की परिणामी सूची संक्षिप्त है। यह अक्सर "वृद्धिशील" विकल्पों के लिए उपयोगी होता है।

उदाहरण:

append_values(a, [{a, [1,2]}, {b, 0}, {a, 3}, {c, -1}, {a, [4]}])

रिटर्न:

[1,2,3,4]
कॉम्पैक्ट (सूची) -> सूची

प्रकार

सूची में सभी प्रविष्टियों के प्रतिनिधित्व को कम करता है। यह [property(P) || P <- ListIn] बराबर है [property(P) || P <- ListIn] [property(P) || P <- ListIn]

property/1 , unfold/1 भी देखें।

हटाएँ (कुंजी, सूची) -> सूची

प्रकार

List से Key के साथ जुड़े सभी प्रविष्टियों को हटाता है।

विस्तार (विस्तार, सूची) -> सूची

प्रकार

संपत्तियों के विशिष्ट सेट (या अन्य शर्तों) के लिए विशेष गुणों का विस्तार करता है। प्रत्येक जोड़ी के लिए {Property, Expansion} Expansions : यदि E Property में समान कुंजी के साथ ListIn में पहली प्रविष्टि है, और E और Property समतुल्य सामान्य रूप हैं, तो E को Expansion में शर्तों के साथ बदल दिया जाता है, और किसी भी निम्नलिखित प्रविष्टियों के साथ उसी कुंजी को ListIn से हटा दिया ListIn

उदाहरण के लिए, निम्नलिखित भाव सभी वापस आते हैं [fie, bar, baz, fum] :

expand([{foo, [bar, baz]}], [fie, foo, fum])
expand([{{foo, true}, [bar, baz]}], [fie, foo, fum])
expand([{{foo, false}, [bar, baz]}], [fie, {foo, false}, fum])

हालाँकि, निम्न कॉल में कोई विस्तार नहीं किया गया है क्योंकि {foo, false} shadows foo :

expand([{{foo, true}, [bar, baz]}], [{foo, false}, fie, foo, fum])

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

normalize/2 भी देखें।

get_all_values ​​(कुंजी, सूची) -> [शब्द ()]

प्रकार

get_value/2 समान, लेकिन सूची में सभी प्रविष्टियों {Key, Value} लिए मूल्यों की सूची लौटाता है। यदि ऐसी कोई प्रविष्टि मौजूद नहीं है, तो परिणाम रिक्त सूची है।

get_bool (कुंजी, सूची) -> बूलियन ()

प्रकार

बूलियन कुंजी / मान विकल्प का मान लौटाता है। यदि lookup(Key, List) {Key, true} , तो यह फ़ंक्शन true , अन्यथा false

get_value/2 , lookup/2 भी देखें।

get_keys (सूची) -> [अवधि ()]

प्रकार

सूची में उपयोग किए गए कुंजियों की एक अनियंत्रित सूची लौटाता है, जिसमें डुप्लिकेट नहीं होते हैं।

get_value (कुंजी, सूची) -> शब्द ()

प्रकार

get_value(Key, List, undefined) बराबर।

get_value (कुंजी, सूची, डिफ़ॉल्ट) -> शब्द ()

प्रकार

सूची में एक साधारण कुंजी / मान गुण का मान लौटाता है। यदि lookup(Key, List) {Key, Value} , तो यह फ़ंक्शन संबंधित Value , अन्यथा Default लौटाता है।

get_all_values/2 , get_bool/2 , get_value/2 , lookup/2

is_defined (कुंजी, सूची) -> बूलियन ()

प्रकार

यदि List में Key के साथ संबद्ध कम से कम एक प्रविष्टि है, तो true , अन्यथा false

लुकअप (कुंजी, सूची) -> कोई नहीं | टपल ()

प्रकार

यदि कोई मौजूद है, तो Key में List पहली प्रविष्टि लौटाता है, अन्यथा none नहीं लौटाता है। सूची में एटम A के लिए, टपल {A, true} A जुड़ी प्रविष्टि है।

get_bool/2 , get_value/2 , lookup_all/2 भी देखें।

लुकिंग_आल (की, लिस्ट) -> [टपल ()]

प्रकार

सूची में Key के साथ जुड़े सभी प्रविष्टियों की सूची लौटाता है। यदि ऐसी कोई प्रविष्टि मौजूद नहीं है, तो परिणाम रिक्त सूची है।

lookup/2 भी देखें।

सामान्यीकृत करें (ListIn, Stages) -> सूची सूची

प्रकार

प्रतिस्थापन / विस्तार चरणों के एक अनुक्रम के माध्यम से ListIn गुजरता है। एक aliases ऑपरेशन के लिए, फ़ंक्शन substitute_aliases/2 को उपनामों की निर्दिष्ट सूची का उपयोग करके लागू किया जाता है:

  • एक negations ऑपरेशन के लिए, निर्दिष्ट नकारात्मक सूची का उपयोग करके substitute_negations/2 लागू किया जाता है।

  • एक expand ऑपरेशन के लिए, फ़ंक्शन expand/2 को expand/2 की निर्दिष्ट सूची का उपयोग करके लागू किया जाता है।

अंतिम परिणाम स्वचालित रूप से संकुचित होता है ( compact/1 तुलना करें)।

आमतौर पर आप पहले नकारात्मकता को प्रतिस्थापित करना चाहते हैं, फिर उपनाम, फिर एक या एक से अधिक विस्तार करते हैं (कभी-कभी आप मुख्य विस्तार करने से पहले विशेष प्रविष्टियों का पूर्व-विस्तार करना चाहते हैं)। आप इस तरह के रूपों को उपनाम और विस्तार सूचियों के दाईं ओर अनुमति देने के लिए, बार-बार नकारने और / या उपनामों को स्थानापन्न करना चाह सकते हैं।

substitute_negations/2 भी देखें।

संपत्ति (संपत्ति) -> संपत्ति

प्रकार

एक संपत्ति का एक सामान्य रूप (न्यूनतम) प्रतिनिधित्व बनाता है। यदि PropertyIn {Key, true} , जहां Key एक परमाणु है, तो Key को वापस लौटा दिया जाता है, अन्यथा पूरे PropertyIn को वापस कर दिया जाता है।

property/2 भी देखें।

संपत्ति (कुंजी, मूल्य) -> संपत्ति

प्रकार

एक साधारण कुंजी / मूल्य संपत्ति का एक सामान्य रूप (न्यूनतम) प्रतिनिधित्व बनाता है। यदि Value true और Key एक परमाणु है, तो रिटर्न देता है, अन्यथा एक टपल {Key, Value} लौटा दी जाती है।

property/1 भी देखें।

विभाजन (सूची, कुंजी) -> {सूची, बाकी}

प्रकार

विभाजन List में उपठेका और शेष की सूची। Lists में कुंजी में प्रत्येक कुंजी के लिए एक क्रमांक होता है, इसी क्रम में। प्रत्येक List में तत्वों के सापेक्ष क्रम को मूल List से संरक्षित किया जाता है। Rest List में ऐसे तत्व हैं जो किसी भी निर्दिष्ट कुंजी के साथ संबद्ध नहीं हैं, साथ ही उनके मूल सापेक्ष क्रम संरक्षित हैं।

उदाहरण:

split([{c, 2}, {e, 1}, a, {c, 3, 4}, d, {b, 5}, b], [a, b, c])

रिटर्न:

{[[a], [{b, 5}, b],[{c, 2}, {c, 3, 4}]], [{e, 1}, d]}
substitute_aliases (उपनाम, ListIn) -> सूची

प्रकार

संपत्तियों की चाबियां। ListIn में प्रत्येक प्रविष्टि के लिए, यदि यह कुछ कुंजी K1 से संबद्ध है, जैसे कि {K1, K2} ListIn में ListIn , तो प्रविष्टि की कुंजी K2 बदल जाती है। यदि समान K1 Aliases में एक से अधिक बार होता है, तो केवल पहली घटना का उपयोग किया जाता है।

उदाहरण के लिए, substitute_aliases([{color, colour}], L) सभी tuples {color, ...} को L साथ {colour, ...} , और सभी atoms color को colour

normalize/2 , substitute_negations/2 भी देखें।

substitute_negations (नकारात्मक, ListIn) -> ListOut

प्रकार

बूलियन-मूल्यवान गुणों की कुंजी कुंजियाँ और साथ ही साथ उनके मूल्यों को नकारती हैं। ListIn में प्रत्येक प्रविष्टि के लिए, यदि यह कुछ कुंजी K1 साथ जुड़ा हुआ है जैसे कि {K1, K2} ListIn में होता है: यदि प्रविष्टि {K1, true} , तो इसे {K2, false} से बदल दिया जाता है, अन्यथा {K2, true} {K2, false} साथ {K2, true} , इस प्रकार विकल्प का नाम बदलना और साथ ही get_bool/2 द्वारा निर्दिष्ट मूल्य की get_bool/2 । यदि वही K1 Negations में एक से अधिक बार होता है, तो केवल पहली घटना का उपयोग किया जाता है।

उदाहरण के लिए, substitute_negations([{no_foo, foo}], L) किसी भी परमाणु no_foo या tuple {no_foo, true} को L साथ {foo, false} , और किसी अन्य tuple {no_foo, ...} को {foo, true} साथ {no_foo, ...} {foo, true}

get_bool/2 , normalize/2 , substitute_aliases/2 भी देखें।

प्रकट (सूची) -> सूची

प्रकार

ListIn में परमाणुओं की सभी घटनाओं को ListIn {Atom, true} में ListIn है।