2013-11-14 10 views
9

मैं दो मूल उपनामों को एक मूल विधि के लिए रखना चाहता हूं, लेकिन मुझे एक ही समय में एकाधिक उपनाम करने के लिए alias_method की क्षमता दिखाई नहीं दे रही है।एलियास एक विधि कई बार

alias_method :aliased_first_method, :first_method 
alias_method :aliased_first_method?, :first_method 
कुछ करने के लिए इस तरह

:

alias_method [:aliased_first_method, :aliased_first_method?], :first_method 

मैं कस्टम तरीकों बनाने में कोई दिलचस्पी नहीं हूँ

तो वहाँ इस से बदलने के लिए एक संभावना है।

+0

मुझे लगता है कि में खास मतलब नहीं दिख रहा है (बस मेरे लगभग हमनाम :) जवाब देने के लिए किया था), लेकिन अगर आप एक एक लाइनर करना चाहते हैं, तो आप कर सकता है: '[: aliased_first_method,: aliased_first_method ?]। प्रत्येक {| नाम | alias_method नाम,: first_method} '(और इसे 'कक्षा' में किसी अन्य विधि में डाल दें, यदि आप चाहें तो इसे नाम दें) – tessi

+0

यदि आपके पास ऊपरी कोड पंक्ति में दो बार दोहराया गया है तो यह समझ में आता है। – Zippie

उत्तर

16

मुझे नहीं लगता कि वहाँ बस प्रत्येक का उपयोग करने से एक बेहतर तरीका है:

[:aliased_first_method, :aliased_first_method?].each{|ali| alias_method ali, :first_method} 
+0

जो मैं खोज रहा था, लेकिन धन्यवाद। मैंने सोचा कि शायद रूबी ने डिफ़ॉल्ट रूप से कुछ बनाया है – Zippie

+0

मैं आपकी इच्छा को समझता हूं, लेकिन यह जवाब सही है। AFAIK, ऐसा करने के लिए कोई अंतर्निहित तरीका नहीं है। – Phrogz

2

alias_method की docs and source को देखते हुए, मैं कहूँगा कि क्या आप चाहते हैं एक कस्टम विधि के बिना संभव नहीं है।

संबंधित मुद्दे