Elixir 1.7

Function




elixir

Function

कार्यों के साथ काम करने का एक सेट।

दो प्रकार के कब्जे वाले कार्य हैं: बाहरी और स्थानीय । बाहरी कार्य ऐसे मॉड्यूल में रहने वाले कार्य हैं जिन्हें &/1 साथ कैप्चर किया गया है, जैसे &String.length/1 । स्थानीय फ़ंक्शन अनाम फ़ंक्शन fn/1 साथ या कैप्चर ऑपरेटर &/1 का उपयोग करके &1 , &2 , और इसी तरह प्रतिस्थापन के साथ परिभाषित होते हैं।

सारांश

प्रकार

information()

कार्य

कैप्चर (मॉड्यूल, function_name, arity)

दिए गए फ़ंक्शन को कैप्चर करता है

info(fun)

किसी फ़ंक्शन के बारे में जानकारी के साथ एक कीवर्ड सूची देता है

जानकारी (मज़ा, आइटम)

फ़ंक्शन के बारे में एक विशेष जानकारी देता है

प्रकार

जानकारी()

information() ::
  :arity
  | :env
  | :index
  | :module
  | :name
  | :new_index
  | :new_uniq
  | :pid
  | :type
  | :uniq

कार्य

कब्जा (मॉड्यूल, function_name, arity) (1.7.0 के बाद से)

capture(module(), atom(), arity()) :: (... -> any())

दिए गए फ़ंक्शन को कैप्चर करता है।

संकलक द्वारा झुका हुआ।

उदाहरण

iex> Function.capture(String, :length, 1)
&String.length/1

जानकारी (मज़ा) (1.7.0 के बाद से)

info((... -> any())) :: [{information(), term()}]

किसी फ़ंक्शन के बारे में जानकारी के साथ एक कीवर्ड सूची देता है।

सभी प्रकार के कार्यों (स्थानीय और बाहरी) के लिए दी गई कुंजी (संबंधित संभावित मूल्यों के साथ) निम्नलिखित हैं:

  • :type - :local (अनाम कार्यों के लिए) या :external (नामित कार्यों के लिए)।

  • :module - एक परमाणु जो मॉड्यूल होता है, जहां फ़ंक्शन को तब परिभाषित किया जाता है जब अनाम या मॉड्यूल जिसे फ़ंक्शन संदर्भित करता है जब यह एक नामित फ़ंक्शन होता है।

  • :arity - (पूर्णांक) फ़ंक्शन को :arity के लिए तर्कों की संख्या।

  • :name - (परमाणु) फ़ंक्शन का नाम।

  • पर्यावरण या मुक्त चर की एक सूची। नामित कार्यों के लिए, लौटी हुई सूची हमेशा खाली होती है।

जब fun एक अनाम फ़ंक्शन होता है (अर्थात, प्रकार है :local ), निम्नलिखित अतिरिक्त कुंजियाँ दी जाती हैं:

  • :pid - उस प्रक्रिया का PID जो मूल रूप से फ़ंक्शन को बनाता है।

  • :index - (पूर्णांक) एक इंडेक्स मॉड्यूल फ़ंक्शन तालिका में।

  • :new_index - (पूर्णांक) मॉड्यूल फ़ंक्शन तालिका में एक सूचकांक।

  • :new_uniq - (बाइनरी) इस फ़ंक्शन के लिए एक अद्वितीय मूल्य है। इसकी गणना पूरे मॉड्यूल के लिए संकलित कोड से की जाती है।

  • :uniq - (पूर्णांक) इस फ़ंक्शन के लिए एक अद्वितीय मान है। इस पूर्णांक की गणना पूरे मॉड्यूल के लिए संकलित कोड से की जाती है।

नोट : इस फ़ंक्शन का उपयोग केवल डीबगिंग उद्देश्यों के लिए किया जाना चाहिए।

संकलक द्वारा झुका हुआ।

उदाहरण

iex> fun = fn x -> x end
iex> info = Function.info(fun)
iex> Keyword.get(info, :arity)
1
iex> Keyword.get(info, :type)
:local

iex> fun = &String.length/1
iex> info = Function.info(fun)
iex> Keyword.get(info, :type)
:external
iex> Keyword.get(info, :name)
:length

जानकारी (मज़ा, आइटम) (1.7.0 के बाद से)

info((... -> any()), item) :: {item, term()} when item: information()

फ़ंक्शन के बारे में एक विशेष जानकारी देता है।

लौटाई गई जानकारी {info, value} के आकार में एक दो-तत्व का टपल है।

किसी भी फ़ंक्शन के लिए, पूछी गई जानकारी परमाणुओं में से कोई भी हो सकती है :module , :name :arity :env , या :type

अनाम कार्यों के लिए, परमाणुओं में से किसी के बारे में भी जानकारी है :index :new_index :new_uniq :uniq , और :pid । एक नामित फ़ंक्शन के लिए, इनमें से किसी भी आइटम का मूल्य हमेशा परमाणु होता है :undefined

प्रत्येक संभावित लौटाए गए मानों की अधिक जानकारी के लिए, info(fun)

संकलक द्वारा झुका हुआ।

उदाहरण

iex> f = fn x -> x end
iex> Function.info(f, :arity)
{:arity, 1}
iex> Function.info(f, :type)
{:type, :local}

iex> fun = &String.length/1
iex> Function.info(fun, :name)
{:name, :length}
iex> Function.info(fun, :pid)
{:pid, :undefined}