एन

एनम में Elixir

98 अभ्यास

एनम के बारे में

Enum एक बहुत उपयोगी मॉड्यूल है, जो इन्यूमरेबल के साथ काम करने के लिए कई एल्गोरिदम देता है। यह कई काम करता है:

और भी बहुत कुछ! पूरी सूची के लिए Enum मॉड्यूल का डॉक्युमेंटेशन देखिए।

इन्यूमरेबल

सामान्य तौर पर, इन्यूमरेबल ऐसा कोई भी डेटा होता है जिस पर इटरेशन किया जा सके, यानी एक संग्रह। Elixir में, इन्यूमरेबल ऐसा कोई भी डेटा टाइप होता है जो Enumerable प्रोटोकॉल को लागू करता है। ये हैं:

अगर आप इन सबको अभी नहीं जानते, तो चिंता न कीजिए।

कोई भी अपने खुद के डेटा स्ट्रक्चर के लिए Enumerable प्रोटोकॉल लागू कर सकता है।

रिड्यूस

Enum.reduce/2 की मदद से आप पूरे इन्यूमरेबल को एक ही वैल्यू तक रिड्यूस कर सकते हैं। ऐसा करने के लिए एक खास वेरिएबल इस्तेमाल होता है, जिसे एक्युमुलेटर कहते हैं। एक्युमुलेटर हर इटरेशन के बीच रिड्यूस की बीच की स्थिति अपने पास रखता है। इसी वजह से यह इन्यूमरेबल के लिए सबसे शक्तिशाली फंक्शनों में से एक है। कई और खास फंक्शनों की जगह ज़्यादा सामान्य reduce से काम चलाया जा सकता है। उदाहरण के लिए...

अधिकतम वैल्यू ढूँढना:

Enum.max([4, 20, 31, 9, 2])
# => 31

Enum.reduce([4, 20, 31, 9, 2], nil, fn x, acc ->
  cond do
    acc == nil -> x
    x > acc -> x
    x <= acc -> acc
  end
end)

# => 31

और मैपिंग भी (लेकिन इसके लिए परिणाम को बाद में उलटना पड़ता है):

Enum.map([1, 2, 3, 4, 5], fn x -> x + 10 end)
# => [11, 12, 13, 14, 15]

Enum.reduce([1, 2, 3, 4, 5], [], fn x, acc -> [x + 10 | acc] end)
# => [15, 14, 13, 12, 11]

मैप को मैप करना

  • Map.new/2 के साथ:

    %{a: 1, b: 2}
    |> Map.new(fn {key, value} -> {key, value * 10} end)
    
  • Enum.into/3 के साथ:

    %{a: 1, b: 2}
    |> Enum.into(%{}, fn {key, value} -> {key, value * 10} end)
    
  • Enum.map/2 के साथ:

    %{a: 1, b: 2}
    |> Enum.map(fn {key, value} -> {key, value * 10} end)
    |> Enum.into(%{})
    
GitHub के ज़रिए संपादित करें यह लिंक नई विंडो या टैब में खुलता है।

एनम सीखिए

अभ्यास लॉक है

एनम पर अभ्यास करने के लिए 10 और अभ्यास अनलॉक कीजिए