द्वारा मॉड्यूल पर कॉल विधि सामान्य रूप से मैं इलीक्सिर और कार्यात्मक प्रोग्रामिंग-भाषाओं के लिए काफी नया हूं।इलीक्सिर - स्ट्रिंग-नाम
एलिक्सीर में, मैं मॉड्यूल नाम पर स्ट्रिंग के रूप में मॉड्यूल पर एक विशिष्ट फ़ंक्शन को कॉल करना चाहता हूं।
मैं काम कर रहा है, जो काफी मैं क्या चाहते हैं करता है निम्नलिखित (बहुत बुरा) कोड मिल गया है करने के लिए:
module_name = elem(elem(Code.eval_file("module.ex", __DIR__), 0), 1)
apply(module_name, :helloWorld, [])
यह (मैं यह समझ में कम से कम के रूप में) (पहले से ही संकलित) के मॉड्यूल संकलित वर्तमान निर्देशिका में module.ex
। मैं दो tuples में से मॉड्यूल नाम (स्ट्रिंग के रूप में नहीं, यह नहीं जानता कि वास्तव में कौन सा डेटा-प्रकार है) निकालें और विधि helloWorld
पर चलाएं।
यह
redefining module Balance
समान एक चेतावनी प्रिंट:इस कोड के साथ दो समस्याएं हैं। मैं निश्चित रूप से उत्पादन में ऐसा नहीं करना चाहता हूं।
AFAIK यह कोड
module.ex
संकलित करता है। लेकिन जैसा मॉड्यूल.एक्स पहले ही संकलित और लोड हो चुका है, यह नहीं चाहता कि ऐसा हो।
मुझे फ़ाइल नाम से इन मॉड्यूल पर विधियों को कॉल करने की आवश्यकता नहीं है, मॉड्यूल-नाम भी ठीक रहेगा। लेकिन इसे गतिशील, उदाहरण के लिए करना है। कमांड लाइन पर "बुक" दर्ज करना, जांच के बाद, मॉड्यूल मौजूद है या नहीं, फ़ंक्शन Book.helloWorld
पर कॉल करें।
धन्यवाद।
छोटे नोट: यदि आप to_existing_atom जब भी संभव हो उपयोग करना चाहिए। परमाणु कचरा इकट्ठा नहीं हैं! –
धन्यवाद! मुझे नहीं पता था कि परमाणु कचरा नहीं एकत्रित हैं। मेरा जवाब संपादित करेंगे। – lschuermann