मैं एक विशेषता के साथ अमृत में इस मॉड्यूल है बाहर जिम्मेदार बताते हैं। मैं Module.get_attribute/2
विधि का उपयोग कर की कोशिश की है, लेकिन यह इस त्रुटि फेंकता है:पहुँच मॉड्यूल मॉड्यूल
iex(79)> Module.get_attribute(MyAwesomeModule, :awesome_number)
** (ArgumentError) could not call get_attribute on module MyAwesomeModule because it was already compiled
(elixir) lib/module.ex:1101: Module.assert_not_compiled!/2
(elixir) lib/module.ex:1016: Module.get_attribute/3
तो अभी, मैं इसे उपयोग करने के लिए एक विधि में मॉड्यूल विशेषता लपेटकर हूँ, लेकिन यह वास्तव में नहीं है मुझे समझो ,
defmodule MyAwesomeModule do
@awesome_number 7
def awesome_number, do: @awesome_number
# other stuff...
end
तो मेरे सवाल है वहाँ एक बेहतर/ऐसा करने का उचित तरीका है: मैं बस विधि का उपयोग करें और सभी को एक साथ विशेषता का उपयोग रोक सकता है?
हम्म। आईएमओ जो बहुत कमजोर कारण की तरह लगता है। मुझे मॉड्यूल विशेषताओं के किसी भी अन्य उपयोग को तब नहीं दिखता है (दस्तावेज़, टैग इत्यादि को छोड़कर ...) – Sheharyar
एलिक्सीर प्लग लाइब्रेरी 'संचित: सत्य' के साथ मॉड्यूल विशेषताओं का उपयोग करने का एक अच्छा उदाहरण है। यदि आप स्रोत में अधिक खोदना चाहते हैं तो यहां एक लिंक है https://github.com/elixir-lang/plug/blob/19f53a67e672152a7393611681431c1e0ec1be04/lib/plug/builder.ex#L121 – ventsislaf