2011-11-07 13 views
33

私のルビファイルには2つのメソッドが定義されています。Rubyをメソッド名に変換する文字列

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

メソッドの名前を含む配列。

methods = ["is_mandatory", "is_alphabets"] 

私はそれだけで、is_mandatory( "ABC")is_alphabets( "ABC")を表示する

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

を以下のではなく、実際にメソッドを呼び出します。

文字列をメソッド名に変換するにはどうすればよいですか? 何か助けていただければ幸いです。

乾杯!

+3

Rubyのis_ *メソッドでは、接頭辞「is」ではなく疑問符を使用します。つまり、「mandatory?」と「alphabets?」です。 –

答えて

50

最良の方法は、おそらくです:

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

Object#send

+0

ありがとうございました! – verdure

+0

これらのメソッドがいくつかのクラスに属していれば? –

+2

次に、次のようなものが必要です: 'obj = OwningClass.new; methods.each {| meth | obj.send(meth、 'abc')} – Chowlett

12

は、 "送信" を試してみてくださいを参照してください。

methods.each do |method| 
    self.send(method, "abc") 
end 
関連する問題