Erlang 21

orddict




erlang

orddict

मॉड्यूल

orddict

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

आदेश सूची के रूप में कुंजी-मूल्य शब्दकोश।

विवरण

यह मॉड्यूल एक Key - Value शब्दकोश प्रदान करता है। एक orddict एक शब्दकोश का एक प्रतिनिधित्व है, जहां कुंजियों और मूल्यों को संग्रहीत करने के लिए जोड़े की एक सूची का उपयोग किया जाता है। सूची को एर्लांग शब्द क्रम में कुंजियों के बाद आदेश दिया गया है।

यह मॉड्यूल एक ही इंटरफ़ेस को dict(3) मॉड्यूल के रूप में प्रदान करता है लेकिन एक परिभाषित प्रतिनिधित्व के साथ। एक अंतर यह है कि जबकि dict दो कुंजियों को अलग-अलग मानती है यदि वे मेल नहीं खाती ( =:= ), तो यह मॉड्यूल दो कुंजियों को अलग-अलग मानता है यदि और केवल यदि वे बराबर ( == ) की तुलना नहीं करते हैं

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

orddict(Key, Value) = [{Key, Value}]

शब्दकोश जैसा कि new/0 द्वारा लौटाया गया है।

orddict() = orddict (term(), term())

निर्यात

परिशिष्ट (कुंजी, मूल्य, Orddict1) -> Orddict2

प्रकार

Key के साथ जुड़े मूल्यों की वर्तमान सूची में एक नया Value जोड़ता है। यदि Key से संबद्ध प्रारंभिक मान मानों की सूची नहीं है, तो एक अपवाद उत्पन्न होता है।

अनुभाग Notes भी देखें।

append_list (की, वैलिस्ट, ऑर्डिक्ट 1) -> ऑर्डिक्ट 2

प्रकार

ValList की सूची को Key के साथ जुड़े मूल्यों की वर्तमान सूची में ValList है। यदि Key से संबद्ध प्रारंभिक मान मानों की सूची नहीं है, तो एक अपवाद उत्पन्न होता है।

अनुभाग Notes भी देखें।

मिटा (कुंजी, Orddict1) -> Orddict2

प्रकार

शब्दकोश से निर्दिष्ट कुंजी के साथ सभी आइटम मिटा देता है।

भ्रूण (कुंजी, संशोधन) -> मूल्य

प्रकार

शब्दकोश Orddict में Key के साथ जुड़े मूल्य Orddict । यह फ़ंक्शन मानता है कि Key शब्दकोश में मौजूद है। यदि Key शब्दकोश में नहीं है, तो एक अपवाद उत्पन्न होता है।

अनुभाग Notes भी देखें।

fetch_keys (Orddict) -> कुंजी

प्रकार

एक शब्दकोश में सभी कुंजी की एक सूची देता है।

ले (की, ऑर्डिक्ट) -> {मान, ऑर्डिक्ट 1} | त्रुटि

प्रकार

यह फ़ंक्शन इस मान के बिना शब्दकोश और नए शब्दकोश से मान लौटाता है। यदि शब्दकोश में कुंजी मौजूद नहीं है, तो error देता है।

फ़िल्टर (पूर्व, Orddict1) -> Orddict2

प्रकार

Orddict2 में सभी कुंजियों और मूल्यों का एक Orddict1 , जिसके लिए Pred(Key, Value) true

ढूँढें (कुंजी, आदेश) -> {ठीक है, मूल्य} | त्रुटि

प्रकार

एक शब्दकोश में एक कुंजी के लिए खोज करता है। रिटर्न {ok, Value} , जहां Value Key के साथ जुड़ा Value है, या यदि शब्दकोश में कुंजी मौजूद नहीं है, तो error

अनुभाग Notes भी देखें।

fold (फन, Acc0, Orddict) -> Acc1

प्रकार

क्रमिक कुंजी और एक अतिरिक्त तर्क Acc (संचायक के लिए कम) के साथ Orddict मूल्यों पर Fun Fun को एक नया संचयकर्ता वापस करना चाहिए जो अगले कॉल पर जाता है। यदि सूची खाली है, तो Acc0 लौटाया जाता है।

from_list (सूची) -> संशोधन

प्रकार

Key - Value List को एक शब्दकोश में परिवर्तित करता है।

is_empty (Orddict) -> बूलियन ()

प्रकार

true अगर Orddict में कोई तत्व नहीं है, तो false

is_key (कुंजी, आदेश) -> बूलियन ()

प्रकार

यदि Key शब्द शब्दकोश में निहित है तो टेस्ट।

नक्शा (मज़ा, Orddict1) -> Orddict2

प्रकार

क्रमिक कुंजियों पर Fun और Orddict1 tvo के मान प्रत्येक कुंजी के लिए एक नया मान लौटाते हैं।

मर्ज (मज़ा, Orddict1, Orddict2) -> Orddict3

प्रकार

एक नया शब्दकोश बनाने के लिए दो शब्दकोश, Orddict1 और Orddict2 को Orddict2 । सभी शब्दकोशों - दोनों शब्दकोशों के Value जोड़े नए शब्दकोश में शामिल हैं। यदि दोनों शब्दकोशों में एक कुंजी होती है, तो Fun को कुंजी के साथ बुलाया जाता है और दोनों मानों को एक नया मान वापस करने के लिए। merge/3 को निम्नानुसार परिभाषित किया जा सकता है, लेकिन तेज है:

merge(Fun, D1, D2) ->
    fold(fun (K, V1, D) ->
                 update(K, fun (V2) -> Fun(K, V1, V2) end, V1, D)
         end, D2, D1).
new () -> orddict

एक नया शब्दकोश बनाता है।

आकार (Orddict) -> पूर्णांक ()> = 0

प्रकार

एक Orddict में तत्वों की संख्या देता है।

स्टोर (की, वैल्यू, ऑर्डिक्ट 1) -> ऑर्डिक्ट 2

प्रकार

एक शब्दकोश में एक Key - Value जोड़ी स्टोर। यदि Key Orddict1 में पहले से मौजूद है, तो संबंधित मान को मान से बदल दिया जाता है।

to_list (Orddict) -> सूची

प्रकार

एक सूची प्रतिनिधित्व के लिए एक शब्दकोश में कनवर्ट करता है।

अद्यतन (कुंजी, मज़ा, Orddict1) -> Orddict2

प्रकार

नई वैल्यू पाने के लिए Fun को कॉल करके डिक्शनरी में वैल्यू अपडेट करता है। यदि Key शब्दकोश में मौजूद नहीं है, तो एक अपवाद उत्पन्न होता है।

अद्यतन (कुंजी, मज़ा, प्रारंभिक, Orddict1) -> Orddict2

प्रकार

नई वैल्यू पाने के लिए Fun को कॉल करके डिक्शनरी में वैल्यू अपडेट करता है। यदि Key शब्दकोश में मौजूद नहीं है, तो Initial को पहले मूल्य के रूप में संग्रहीत किया जाता है। उदाहरण के लिए, append/3 को निम्नानुसार परिभाषित किया जा सकता है:

append(Key, Val, D) ->
    update(Key, fun (Old) -> Old ++ [Val] end, [Val], D).
update_counter (कुंजी, वृद्धि, Orddict1) -> Orddict2

प्रकार

Key के साथ जुड़े मूल्य में Increment जोड़ता है और इस मूल्य को संग्रहीत करता है। यदि Key शब्दकोश में मौजूद नहीं है, तो Increment को पहले मूल्य के रूप में संग्रहीत किया जाता है।

इसे निम्नानुसार परिभाषित किया जा सकता है, लेकिन यह तेज है:

update_counter(Key, Incr, D) ->
    update(Key, fun (Old) -> Old + Incr end, Incr, D).

टिप्पणियाँ

कार्य append/3 और append_list/3 शामिल हैं ताकि append_list/3 मूल्यों को सूची संचयकर्ता में संग्रहीत किया जा सके, उदाहरण के लिए

> D0 = orddict:new(),
  D1 = orddict:store(files, [], D0),
  D2 = orddict:append(files, f1, D1),
  D3 = orddict:append(files, f2, D2),
  D4 = orddict:append(files, f3, D3),
  orddict:fetch(files, D4).
[f1,f2,f3]

यह पहले कुंजी वाले मूल्य को प्राप्त करने की परेशानी से बचाता है, संग्रहीत मूल्यों की सूची में एक नया मूल्य जोड़ता है, और परिणाम संग्रहीत करता है।

यदि फंक्शन में जाना जाता है, तो फंक्शन fetch/2 का उपयोग किया जाना चाहिए, अन्यथा फंक्शन find/2

यह भी देखें

gb_trees(3) , gb_trees(3)