7

クラスオブジェクトからメソッド:fooの定義を取得しようとしています。

class Bar
  def foo(required_name, optional="something")
    puts "Hello args are #{required_name}, #{optional}"
  end

  def self.bar
    puts "I am easy, since I am static"
  end
end

オブジェクト(アプリの要件)を作成する必要があるかどうかを評価するためのメソッド定義が必要なため、クラスの インスタンスを作成できませんBar.class.???(:foo)

bar私は定義で得ることができますBar.class.method(:bar)が、もちろん私は必要ですfoo、ありがとう!

アップデート:

Ruby1.8.7の使用

4

2 に答える 2

8

instance_method次のようなクラスでメソッドを使用できます。

Bar.instance_method(:foo)

のインスタンスを返しますUnboundMethod。(http://ruby-doc.org/core-1.9.3/UnboundMethod.htmlを参照してください)

于 2012-08-21T13:59:14.587 に答える
2

:fooクラスに次のようなインスタンスメソッドがあるかどうかを確認できます。

Bar.instance_methods.include? :foo

例:

String.instance_methods.include? :reverse
=> true
String.instance_methods.include? :each
=> false
于 2012-08-21T13:54:58.650 に答える