Ruby从Class获取实例方法定义

时间:2012-08-21 13:46:04

标签: ruby-on-rails ruby

我试图从Class对象中获取方法的定义:

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,谢谢!

更新:

使用 Ruby 1.8.7

2 个答案:

答案 0 :(得分:8)

您可以在类似这样的类上使用方法instance_method

Bar.instance_method(:foo)

将返回UnboundMethod的实例。 (见http://ruby-doc.org/core-1.9.3/UnboundMethod.html

答案 1 :(得分:1)

您可以发现该类是否具有如下所示的实例方法:foo

Bar.instance_methods.include? :foo

一个例子:

String.instance_methods.include? :reverse
=> true
String.instance_methods.include? :each
=> false