我想从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
答案 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'。如果类方法调用调用它的相同方法,它将进入无限循环。