有没有办法通过实例方法知道类名?红宝石

时间:2013-10-04 04:17:21

标签: ruby oop

所以我假设我有一个类方法call_me_once。有没有方法来检查班级名称?

例如call_me_once.my_class_name

2 个答案:

答案 0 :(得分:2)

如果您正在寻找方法的类名,有两种简单的方法可以实现这一点,每种方法都取决于您拥有的方法类型。如果是类方法,那么您可以使用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类方法和实例方法不会。

答案 1 :(得分:0)

可以使用

检查班级
call_me_once.class