मैं खुद से एक विधि नाम पाने के लिए कोशिश कर रहा हूँ:रूबी - मैं अपने भीतर एक विधि नाम कैसे प्राप्त कर सकता हूं?
def funky_method
self.inspect
end
यह रिटर्न "मुख्य"।
मैं इसके बजाय "funky_method" कैसे वापस कर सकता हूं?
मैं खुद से एक विधि नाम पाने के लिए कोशिश कर रहा हूँ:रूबी - मैं अपने भीतर एक विधि नाम कैसे प्राप्त कर सकता हूं?
def funky_method
self.inspect
end
यह रिटर्न "मुख्य"।
मैं इसके बजाय "funky_method" कैसे वापस कर सकता हूं?
यहाँ कोड है:
संस्करणों के लिए> = 1.9:
def funky_method
return __callee__
end
संस्करणों < 1.9 के लिए:
def funky_method
return __method__
end
बहुत ही सरल:
def foo
puts __method__
end
__callee__
वर्तमान विधि के "नामित नाम" देता है जबकि __method__
वर्तमान विधि के "परिभाषा पर नाम" देता है।
परिणामस्वरूप, __method__
alias_method के साथ उपयोग किए जाने पर अपेक्षित परिणाम वापस नहीं करता है।
class Foo
def foo
puts "__method__: #{__method__.to_s} __callee__:#{__callee__.to_s} "
end
alias_method :baz, :foo
end
Foo.new.foo # __method__: foo __callee__:foo
Foo.new.baz # __method__: foo __callee__:baz
पर्याय: '__method__' – steenslag
केवल' __method__' 1.8, में काम करेंगे '__callee__' 1.9 – UncleGene
तो साथ आता है, तुम कह रहे हो कि' __method__' रूबी संस्करण> = 1.9 के लिए काम नहीं करता है? चेतन पाटिल के जवाब के मुताबिक, वे अलग-अलग मूल्यों का उत्पादन करते हैं, कॉलर बनाम विधि नाम बनाते हैं। –