जूलिया में, methods
फ़ंक्शन का उपयोग फ़ंक्शन के तरीकों को पुनर्प्राप्त करने के लिए किया जा सकता है।मैं जूलिया मैक्रो के तरीकों को कैसे प्राप्त कर सकता हूं?
julia> f(::Int) = 0
f (generic function with 1 method)
julia> f(::String) = ""
f (generic function with 2 methods)
julia> methods(f)
# 2 methods for generic function "f":
f(::String) in Main at REPL[1]:1
f(::Int64) in Main at REPL[0]:1
मैक्रोज़ में कई विधियां भी हो सकती हैं।
julia> macro g(::Int)
0
end
@g (macro with 1 method)
julia> macro g(::String)
""
end
@g (macro with 2 methods)
julia> @g 123
0
julia> @g "abc"
""
हालांकि, methods
समारोह मैक्रो पर काम करने की वजह से जूलिया पहले तथ्य है कि वे कोष्ठकों की जरूरत नहीं है की वजह से मैक्रो कॉल नहीं लगती।
julia> methods(@g)
ERROR: MethodError: no method matching @g()
Closest candidates are:
@g(::String) at REPL[2]:2
@g(::Int64) at REPL[1]:2
रहा एक Expr
ession का उपयोग कर मैक्रो होना करने की कोशिश की है, लेकिन इस काम नहीं किया।
julia> methods(:@g)
# 0 methods for generic function "(::Expr)":
मैं मैक्रो के तरीकों को कैसे प्राप्त कर सकता हूं?
'तरीकों (eval (चिह्न (" @ जी ")))' मेरे लिए काम किया है, लेकिन वहाँ एक क्लीनर विधि होना चाहिए –
क्लीनर (बिना 'eval' के साथ): 'विधियों (मुख्य। (प्रतीक (" @ जी "))) –
@DanGetz नाइस। लेकिन हाँ, वहाँ * एक क्लीनर विधि होना चाहिए ... (वैसे, 'मुख्य। (प्रतीक ("@ जी")) 'बहिष्कृत है, और' गेटफील्ड (मुख्य, प्रतीक (" @ जी ")' चाहिए इसके बजाय इस्तेमाल किया जाना चाहिए।) –