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

Ruby 有没有办法通过实例方法知道类名?红宝石,ruby,oop,Ruby,Oop,因此,让我们假设我有一个类方法调用我一次。是否有任何方法来检查类的名称 例如呼叫我一次。我的班级名称?可以使用 call_me_once.class 如果您正在寻找方法的类名,有两种简单的方法可以实现这一点,每个方法取决于您拥有的方法类型。如果是类方法,则可以使用方法#receiver如下: class Test def cls_method puts "Class Method" end def some_method puts "Instance Method

因此,让我们假设我有一个类方法
调用我一次
。是否有任何方法来检查类的名称


例如
呼叫我一次。我的班级名称

可以使用

call_me_once.class

如果您正在寻找方法的类名,有两种简单的方法可以实现这一点,每个方法取决于您拥有的方法类型。如果是类方法,则可以使用
方法#receiver
如下:

class Test
  def cls_method
    puts "Class Method"
  end

  def some_method
    puts "Instance Method"
  end
end

Test.method(:cls_method).receiver # => Test
如果要处理实例方法,则需要使用
方法#owner
方法:

Test.instance_method(:some_method).owner # => Test

如果您事先不知道是否接收到类或实例方法,可以检查该方法是否会响应
receiver
哪些类方法会响应,哪些实例方法不会响应。

什么类?方法的返回值的类?在其中定义方法的类/模块?您当前所在的类/模块?具有预期输出的扩展示例可能很有用。