Ruby:从类方法调用实例方法

时间:2015-02-24 22:59:44

标签: ruby

我想从some_instance_method致电some_class_method。在以下代码中,从实例方法调用类方法。

class Foo
  def self.some_class_method
     puts self
  end

  def some_instance_method
    self.class.some_class_method
  end
end

3 个答案:

答案 0 :(得分:1)

你想做的事情真的有意义吗?应该调用实例方法的实例?如果没关系,你可以这样做:

class Foo
  def self.some_class_method
    new.some_instance_method
    puts self
  end

  def some_instance_method
    self.class.some_class_method
  end
end

当然,这会导致无限循环。

答案 1 :(得分:0)

要调用实例方法,您需要在某处实例化该对象,不能在没有对象的情况下调用实例方法。

def self.some_class_method
  puts self.first.some_instance_method
end

这样的事情应该有效

答案 2 :(得分:0)

您需要将要成为调用接收者的实例传递给类方法。所以新代码是:

class Foo
  def self.some_class_method(instance)
     instance.some_other_instance_method
     puts self
  end

  def some_instance_method
    self.class.some_class_method(self)
  end
end

请注意,类方法调用'some_other_instance_method'。如果类方法调用调用它的相同方法,它将进入无限循环。