所以让我们假设我有一个类方法call_me_once
。有什么方法可以检查类的名称吗?
比如call_me_once.my_class_name
?
如果您正在寻找方法的类名,有两种简单的方法可以实现这一点,每种方法都取决于您拥有的方法类型。如果它是一个类方法,那么你可以Method#receiver
像这样使用:
class Test
def cls_method
puts "Class Method"
end
def some_method
puts "Instance Method"
end
end
Test.method(:cls_method).receiver # => Test
如果您正在处理实例方法,那么您将需要使用该Method#owner
方法:
Test.instance_method(:some_method).owner # => Test
如果您事先不知道您是否接收到一个类或实例方法,您可以检查该方法是否会响应receiver
哪些类方法会响应,哪些实例方法不会。
可以通过使用检查类
call_me_once.class