我试图从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
答案 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