2011-11-07 21 views
33

मेरे पास मेरी रूबी फ़ाइल में दो विधियां परिभाषित हैं।रूबी स्ट्रिंग कन्वर्ट स्ट्रिंग विधि नाम

def is_mandatory(string) 
     puts xyz 
end 
def is_alphabets(string) 
     puts abc 
end 

विधियों के नाम वाली एक सरणी।

methods = ["is_mandatory", "is_alphabets"] 

जब मैं निम्नलिखित है

methods.each do |method| puts method.concat("(\"abc\")") end 

यह सिर्फ प्रदर्शित करता है, is_mandatory ("abc") is_alphabets ("abc") के बजाय वास्तव में विधि बुला।

मैं स्ट्रिंग को विधि नाम में कैसे परिवर्तित कर सकता हूं? किसी भी मदद की बहुत सराहना की है।

चीयर्स !!

+3

एक तरफ ध्यान दें पर, is_ * तरीकों करने का रूबी तरह से नहीं बल्कि उपसर्ग से एक प्रश्न चिह्न का उपयोग करना है, यानि कि 'अनिवार्य?" है "' और 'अक्षर?'। –

उत्तर

50

सबसे अच्छा तरीका शायद है:

methods.each { |meth| send(meth, 'abc') } 

देखें Object#send

+0

धन्यवाद कि काम किया! – verdure

+0

यदि ये विधियां कुछ कक्षा से संबंधित हैं? –

+2

फिर आप कुछ ऐसा चाहते हैं: 'obj = OwningClass.new; method.each {| मेथ | obj.send (मेथ, 'एबीसी')} ' – Chowlett

12

"भेजें" का उपयोग करें।

methods.each do |method| 
    self.send(method, "abc") 
end 
संबंधित मुद्दे