[英]Ruby: Calling instance method from class method
我想打電話給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
您想做的事情真的有意義嗎? 應該在哪個實例上調用實例方法? 如果沒關系,您可以這樣做:
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
當然,這將導致無限循環。
要調用實例方法,您需要已將該對象實例化到某個地方,如果沒有對象,您將無法調用實例方法。
def self.some_class_method
puts self.first.some_instance_method
end
這樣的事情應該工作
您需要將您希望成為實例的調用的實例傳遞給該類方法。 因此,新代碼為:
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”。 如果類方法要調用與之相同的方法,則它將進入一個無限循環。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.