Я смотрю на этот код в библиотеке Ruby.
Правильно ли я предполагаю, что self.class.delete вызывает метод класса , вызываемый delete для текущего объекта - т.е. объект, на который ссылается self.
self.class.delete
delete
self
def delete! self.class.delete(self.key) end
Вызывает метод класса 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
Это правильно, несмотря на тот факт, что 'методы класса' ruby на самом деле являются методами экземпляров классов.
Да, это метод класса. Что касается того, вызывает ли он его для текущего объекта, это зависит от того, как вы используете терминологию. Он вызывает метод delete класса текущего объекта с аргументом self.key.
self.key