एक ही प्रोजेक्ट के अलग-अलग Elixir मॉड्यूल के बीच कोड साझा करने के लिए आपको बाहरी मॉड्यूल का पूरा नाम लिखना पड़ता है। लेकिन अगर वह नाम बहुत लंबा या उलझाने वाला हो, तो क्या करें?
विशेष फॉर्म alias की मदद से आप बाहरी मॉड्यूल का नाम छोटा कर सकते हैं, या उसे किसी और नाम से बुला सकते हैं। बिना कोई आर्गुमेंट दिए इस्तेमाल करने पर यह मॉड्यूल के नाम का सिर्फ अंतिम हिस्सा रख देता है, जैसे MyApp.Logger.Settings अब Settings हो जाता है। अगर आप कोई और नाम चाहते हैं, तो वह :as विकल्प से तय किया जा सकता है।
आम तौर पर alias मॉड्यूल की परिभाषा की शुरुआत में जोड़े जाते हैं।
defmodule Square do
alias Integer, as: I
def area(a), do: I.pow(a, 2)
end
विशेष फॉर्म import की मदद से आप बाहरी मॉड्यूल के फंक्शन उस मॉड्यूल का नाम लिखे बिना इस्तेमाल कर सकते हैं।
किसी बाहरी मॉड्यूल को पूरा import करने से मौजूदा लोकल फंक्शनों के साथ टकराव हो सकता है। इससे बचने के लिए दो विकल्प मौजूद हैं: :except और :only. दोनों में एक कीवर्ड लिस्ट देनी होती है, जिसमें की फंक्शन का नाम होता है और वैल्यू उस फंक्शन के आर्गुमेंट की संख्या।
आम तौर पर import मॉड्यूल की परिभाषा की शुरुआत में जोड़े जाते हैं।
defmodule Square do
import Integer, only: [pow: 2]
def area(a), do: pow(a, 2)
end
हाल ही में आपने जो रिमोट कंट्रोल कार खरीदी थी, वह अब एक नए शौक में बदल गई है। आप रिमोट कंट्रोल कारों की रेसें आयोजित करते आ रहे हैं।
आप एक ऐसा प्रोग्राम लिखने ही वाले थे जिससे रेस के सिमुलेशन चलाए जा सकें, तभी आपकी बिल्ली कीबोर्ड पर कूद पड़ी और कोड की कुछ लाइनें मिटा दीं। अब आपका प्रोग्राम कंपाइल ही नहीं होता...
Race.__struct__/0 is undefined
एक alias जोड़िए ताकि मॉड्यूल NeedForSpeed.Race को छोटे नाम Race से संदर्भित किया जा सके।
Car.__struct__/0 is undefined
एक alias जोड़िए ताकि मॉड्यूल NeedForSpeed.RemoteControlCar को छोटे नाम Car से संदर्भित किया जा सके।
undefined function puts/1
फंक्शन puts/1 मॉड्यूल IO से आता है। इसे import कीजिए ताकि मॉड्यूल का नाम लिए बिना इसका उपयोग किया जा सके।
undefined function default_color/0
फंक्शन default_color/0, red/0, cyan/0 और green/0 सभी मॉड्यूल IO.ANSI से आते हैं। आप कार के दूसरे रंगों के लिए समर्थन जोड़ने की योजना बना रहे हैं, इसलिए आप पूरा मॉड्यूल import करना चाहते हैं। दुर्भाग्य से, मॉड्यूल IO.ANSI का फंक्शन color/1 आपके किसी स्थानीय फंक्शन से टकराता है। उस एक फंक्शन को छोड़कर पूरा IO.ANSI मॉड्यूल import कीजिए।
Exercism पर साइन अप कीजिए और Elixir को 58 कॉन्सेप्ट168 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।