खोज…


परिचय

आइए, मानचित्र जैसे मूल उच्च आदेश कार्यों को लागू करने का प्रयास करें और अमृत का उपयोग कम करें

नक्शा

मानचित्र एक फ़ंक्शन है जो एक सरणी और एक फ़ंक्शन लेगा और उस सूची में प्रत्येक तत्व को उस फ़ंक्शन को लागू करने के बाद एक सरणी लौटाएगा

defmodule MyList do
  def map([], _func) do
    []
  end

  def map([head | tail], func) do
    [func.(head) | map(tail, func)]
  end
end

iex में कॉपी पेस्ट और निष्पादित करें:

MyList.map [1,2,3], fn a -> a * 5 end

शॉर्टहैंड सिंटैक्स MyList.map [1,2,3], &(&1 * 5)

कम करना

कमी एक ऐसा कार्य है जो एक सरणी, फ़ंक्शन और संचायक को ले जाएगा और अगले संचयकर्ता को देने के लिए पहले तत्व के साथ पुनरावृत्ति शुरू करने के लिए बीज के रूप में संचायक का उपयोग करेगा और यह सरणी में सभी तत्वों के लिए जारी रहता है (नीचे उदाहरण देखें)

defmodule MyList do
  def reduce([], _func, acc) do
    acc
  end

  def reduce([head | tail], func, acc) do
    reduce(tail, func, func.(acc, head))
  end
end

Iex में उपरोक्त स्निपेट को कॉपी पेस्ट करें:

  1. किसी सरणी में सभी संख्याओं को जोड़ने के लिए: MyList.reduce [1,2,3,4], fn acc, element -> acc + element end, 0
  2. किसी सरणी में सभी संख्याओं को परस्पर जोड़ने के लिए: MyList.reduce [1,2,3,4], fn acc, element -> acc * element end, 1

उदाहरण 1 के लिए स्पष्टीकरण:

Iteration 1 => acc = 0, element = 1 ==> 0 + 1 ===> 1 = next accumulator
Iteration 2 => acc = 1, element = 2 ==> 1 + 2 ===> 3 = next accumulator
Iteration 3 => acc = 3, element = 3 ==> 3 + 3 ===> 6 = next accumulator
Iteration 4 => acc = 6, element = 4 ==> 6 + 4 ===> 10 = next accumulator = result(as all elements are done)

सूची का उपयोग करके फ़िल्टर करें

MyList.reduce [1,2,3,4], fn acc, element -> if rem(element,2) == 0 do acc else acc ++ [element] end end, []


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow