簡體   English   中英

Ruby:從類方法調用實例方法

[英]Ruby: Calling instance method from class method

我想打電話給some_instance_methodsome_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM