मान लें कि मेरे पास दो मॉड्यूल a.erl और b.erl हैं। दोनों मॉड्यूल में एक ही कार्य होते हैं (जावा में मैं कहूंगा "दोनों वर्ग एक ही इंटरफ़ेस को लागू करते हैं")। मॉड्यूल "c.erl" में मैं एक समारोह है कि मॉड्यूल वापस आ जाएगी "एक" या "b" (पैरामीटर पर निर्भर करता है)एरलांग में गतिशील रूप से मॉड्यूल को कैसे कॉल करें?
यहाँ है कि मैं क्या मॉड्यूल में रखना चाहते हैं करना चाहते हैं c.erl
-module(c)
get_handler(Id) ->
% if Id == "a" return a
% if Id == "b" return b
test() ->
get_handler("a"):some_function1("here were go for a"),
get_handler("a"):some_function2("aaaa"),
get_handler("b"):some_function1("here we go for b")
मैं यह काम कैसे कर सकता हूं? मैं एरलांग के लिए अपेक्षाकृत नया हूं और यह नहीं जानता कि इसे कैसे किया जाए। जावा में यह बहुत स्पष्ट होगा, क्योंकि आप कक्षा के नए उदाहरण को वापस कर देते हैं।
मुझे यकीन नहीं है कि क्या मैं इस प्रश्न को लिखे गए तरीके से समझता हूं। क्या आप इस तरह आयात नहीं करेंगे: -इम्पोर्ट (मॉड्यूल, [फंक्शन 1/एरीटी, ..., फंक्शन एन/एरीटी])। 'और फिर' a: some_function/arity' या 'b: some_function/arity'' पर कॉल करें? –
मैं मॉड्यूल "सी" या "अगर" कथन में अलग-अलग कॉल नहीं करना चाहता हूं। मैं वही कोड रखना चाहता हूं जो फ़ंक्शन कॉल करेगा, निर्भर करता है कि get_handler क्या देता है।मेरे उदाहरण में get_handler "ए" और "बी" के बीच चुनता है, लेकिन वहां से अधिक मॉड्यूल हो सकते हैं जो इसे चुन सकते हैं। – cactus