Вызывает ли self.class.delete метод класса? - PullRequest
4 голосов
/ 10 июня 2009

Я смотрю на этот код в библиотеке Ruby.

Правильно ли я предполагаю, что self.class.delete вызывает метод класса , вызываемый delete для текущего объекта - т.е. объект, на который ссылается self.

def delete!
  self.class.delete(self.key)
end

Ответы [ 3 ]

8 голосов
/ 10 июня 2009

Вызывает метод класса delete для класса self.

class Example
  def self.delete
    puts "Class method. 'self' is a " + self.class.to_s
  end

  def delete!
    puts "Instance method. 'self' is a " + self.class.to_s
    self.class.delete
  end
end

Example.new.delete!

Выходы:

Instance method. 'self' is a Example
Class method. 'self' is a Class
1 голос
/ 10 июня 2009

Это правильно, несмотря на тот факт, что 'методы класса' ruby ​​на самом деле являются методами экземпляров классов.

0 голосов
/ 10 июня 2009

Да, это метод класса. Что касается того, вызывает ли он его для текущего объекта, это зависит от того, как вы используете терминологию. Он вызывает метод delete класса текущего объекта с аргументом self.key.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...