मैं गतिशील रूप से फ़ंक्शन नाम बनाना चाहता हूं। मैं इस मैक्रोइलीक्सिर मैक्रो का उपयोग करके गतिशील फ़ंक्शन नाम कैसे बनाएं?
defmacro generate_dynamic(name) do
quote do
def add_(unquote(name)) do
end
end
end
लिखा था और मैं इसे इस तरह इस्तेमाल किया:
defmodule AnotherModule do
generate_dynamic :animal
end
अब, मैं केवल मिल AnotherModule.add_
समारोह में परिभाषित किया गया है, जबकि मैं AnotherModule.add_animal
समारोह की उम्मीद है।
मैंने सोचा था कि 'unquote' केवल से काम किया ** एक मैक्रो में किसी एक **। यह एक अज्ञात फ़ंक्शन के अंदर कैसे काम कर रहा है? – asymmetric
मैं खुद का जवाब देता हूं: अनकोट और [अनजान टुकड़े] (http://elixir-lang.org/docs/stable/elixir/Kernel.SpecialForms.html) दो अलग-अलग चीजें हैं। – asymmetric
जुसी उपर्युक्त को स्पष्ट करने के लिए: अनजान टुकड़े 'उद्धरण' हैं जो 'उद्धरण' ब्लॉक के बाहर हैं। – asymmetric