Ruby Module
有一个方法instance_methods
,可以返回该类的方法列表。但是如何检索类的类方法列表?
答案 0 :(得分:3)
您可以将false
参数传递给Object#methods。
class Foo
def self.bar
end
end
Foo.methods(false) #=> [:bar]
答案 1 :(得分:2)
使用以下命令转到 rails 控制台:
rails c
类型:
Class.methods
您将把它们都列在一个列表中。
如果要获取特定类的方法,请键入:
Class_name.methods
答案 2 :(得分:1)
您需要知道的第一件事是Ruby中没有类方法。我们通俗地称之为“类方法”实际上只不过是一种普通的单例方法。 所有对象都可以有单例方法,类没什么特别的。
实际上,也没有单独的方法!我们通俗地称之为“单例方法”实际上只是对象单例类的常规无聊实例方法。
因此,既然您已经知道如何列出实例方法,并且您现在知道类方法实际上是实例方法,那么您已经知道如何回答自己的问题:
class Foo; def self.bar; end end
class << Foo
instance_methods(false)
end
# => [:bar]
Foo.singleton_class.instance_methods(false)
# => [:bar]
然而,即使单例方法实际上并不存在,讨论它们仍然很有用,而上述结构只是不够方便,实际上有专门的方法执行相同的操作。以上:
Foo.singleton_methods(false)
# => [:bar]
答案 3 :(得分:0)
class Song
def self.hello;end
end
p Song.singleton_methods
结果:
[:hello]
答案 4 :(得分:0)
好吧,如果你有这个:
object = Object.new
并且您希望获得Object
(object
的父级)的类方法列表,您可以通过以下方式获取:
object.class.methods
如果您有一些课程,请说Samuel
您可以通过Samuel.methods
轻松获得课程方法。你可以这样做,因为Samuel
是类Class 的实例,因此你可以从普通对象中获取它的方法。