7

我正在尝试从 Class 对象中获取方法 :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,谢谢!

更新:

使用Ruby 1.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 回答