Genel olarak Elixir ve fonksiyonel programlama dillerinde oldukça yeniyim.Elixir - Dize adıyla modülde çağrı metodu
Elixir'de, Modül adı String olarak verildiğinde, Modüller'de belirli bir işlevi çağırmak istiyorum.
ben çok fazla ne istediğiniz, hangi çalışma aşağıdaki (çok kötü) kodu var etmek:
module_name = elem(elem(Code.eval_file("module.ex", __DIR__), 0), 1)
apply(module_name, :helloWorld, [])
Bu (Anladığım en azından gibi) ait (zaten derlenmiş) modülünü derler Geçerli dizinde module.ex
. Modül adını (String olarak değil, aslında hangi veri tipini olduğunu bilmiyorum) iki tupldan çıkarıyorum ve üzerinde helloWorld
metodunu çalıştırıyorum. Bu redefining module Balance
gibi bir uyarı yazdırır
:
bu kodla iki sorun vardır. Bunun üretimde olmasını kesinlikle istemiyorum.
- AFAIK bu kod
module.ex
'u derler. Ancak, module.ex zaten derlenmiş ve yüklenmiş olduğundan, bunun olmasını istemez.
Bu modüllerde dosya adı yöntemlerini çağırmam gerekmiyor, modül adı da iyi olurdu. Ancak, dinamik olarak, ör. Komut satırında "Kitap" girilmesi, modülün mevcut olup olmadığını kontrol ettikten sonra, Book.helloWorld
işlevini çağırmalıdır.
Teşekkürler.
Küçük bir not: Eğer mümkünse to_existing_atom kullanmalıdır. Atomlar toplanan çöp toplandı! –
Teşekkürler! Atomların toplanmadığını bilmiyordum. Cevabımı düzenler. – lschuermann